(三)字符串、向量、数组

来源:互联网 发布:淘宝店头像在线制作 编辑:程序博客网 时间:2024/06/06 20:08

直接初始化和拷贝初始化

string s1(10,'c');

string s2 = string(10,'c');//会影响性能!?

s1.size();//返回对象中字符的个数,类型为string::size_type,是无符号类型,不要与有符号类型混用

//范围 forstring str("Some String");for(auto c : str){    cout << c << endl;}
//引用每个元素string str("All To Upper");for(auto &c : str){  c = toupper(c);}cout<< str << endl;

使用下标访问空string会越界引发不可预知结果


无论何时用到字符串的下标,都应该注意检查其合法性.


列表初始化,尽可能把花括号内的值当成是元素初始值来处理,如果花括号提供的值不能用来列表初始化,则考虑构造函数等


在for等循环中,不要向容器中添加新元素,也不要改变容器的大小.在迭代中,某些对vector对象的操作会使迭代器失效.

iterator ite;ite++;--ite;//不会越界?ite + n;ite - n;


int a[10];

decltype(a) b; 类型为10个元素的数组


标准库函数 begin  end;end并非是数组的最后一个元素,而是最后一个元素的下一个位置.


ptrdiff_t size_t 都是带符号类型.


标准库限定使用的下标必须是无符号类型,数组可以是有符号的.


string.c_str()返回c风格字符串,无法保证此字符串一直有效,如果以后希望使用,应该重新拷贝一次.


decltype 多维数组 需要逐层解析 auto 也一样


0 0
原创粉丝点击