1、编程小结

1、输入包含空格的字符串

//C
char s1[4000];
gets(s1);

//C++
string s2;
getline(cin, s2);

2、无法定义 char s ='' 。"" != "空格" 

3、isalpha(), tolower() 等函数的头文件是 ctype.h

4、substr(i, n) 参数i是开始的第一个字符的位置(不是迭代器), n是从i开始的总共n个字符

5、vector erase(p)删除容器p所指向的元素,返回的迭代器指向刚才所删除元素后面的一个元素。在for循环中调用erase之后,--it.

6、无法用STL里的sort算法对容器set作排序。set本身就是一种有序的容器。 set主要用于不常变动的数据,对其数据的变动,只能是删除旧的,然后再插入新的。随机访问的容器vector,deque,string没有sort成员,可调用泛型算法sort排序;list排序调用自带的list::sort。

bool compare(int a,int b)
{
      return a<b;   //升序排列,如果改为return a>b,则为降序
}
sort(a,a+20,compare);

7、map 可以修改实值,而不能修改key。每个关键字只能在map中出现一次。

#include <map>
map<int, int> mmap;
mmap.insert(pair<int, int>(index, value));
for(map<int, int>::iterator it=mmap.begin(); it!=mmap.end(); it++) {
		cout << it->first << ' ' << it->second <<endl;
	}

8、cin是标准输入istream的一个对象,">>"接收一个istream对象作为其做操作数,接收一个对象作为其右操作数。">>"操作符返回其左操作数作为结果。cin>>x>>y,因为cin>>x返回cin对象,接着又可以进行cin>>y。所以我们就可以顺利进行输入了。

9、获取变量的数据类型

#include <typeinfo>
using namespace std;
...
cout << typeid(d).name() << endl;

10、首先atoi和strtol都是c里面的函数,他们都可以将字符串转为int,它们的参数都是const char*,因此在用string时,必须调c_str()方法将其转为char*的字符串。或者atof,strtod将字符串转为double。strtol的第三个参数base的含义是当前字符串中的数字是什么进制,而atoi则只能识别十进制的。另外可以注意到的是,如果转换失败,这两个函数不会报错,而是返回0。但是对于stoi就不是这样了,atoi是string库中的函数,他的参数是string。

    string strnum="XDEADbeE";
    int num1=atoi(strnum.c_str()); //出错只能识别十进制
    int num2=stoi(strnum.c_str(),0,16);
    cout<<"atoi的结果为:"<<num1<<endl;
    cout<<"stoi的结果为:"<<num2<<endl;


int型转string型

void int2str(const int &int_temp,string &string_temp)  
{  
        stringstream stream;  
        stream<<int_temp;  
        string_temp=stream.str();   //此处也可以用 stream>>string_temp  
}  
 

string型转int型

void str2int(int &int_temp,const string &string_temp)  
{  
    stringstream stream(string_temp);  
    stream>>int_temp;  
}  

11、能进行算术运算的迭代器只有随即访问迭代器,要求容器元素存储在连续内存空间里,vector,string,deque的迭代器是有加减法的,但是map,set,multimap,multiset的迭代器是没有加减法的,list也不可以。

倒序遍历:for(map <string, int>::reverse_iterator it=recd.rbegin(); it!=recd.rend(); ++it) 

猜你喜欢

转载自blog.csdn.net/qq_23084801/article/details/80873690