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

直接初始化和拷贝初始化

string s1(10,'c');

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

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

//范围 for
string 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值