C++小知识2

继C++小知识1

五. string类中的size()函数和length()函数的区别?
(1)size
语法:
size_type size();
size()函数返回字符串中现在拥有的字符数。

(2)长度(length)
语法:
size_type length();
length()函数返回字符串的长度. 这个数字应该和size()返回的数字相同.
vector有size()函数得到大小,string有length()函数得到长度,注意都是0~xx-1哦

.四种 列表初始化
(1) int a = 0;
(2) int a = {1};
(3) int a{2};
(4) int a(3);
如果使用等号(=)初始化一个变量, 实际上执行的是 拷贝初始化 !编译器把等号右侧的初始值拷贝到新创建的对象去。
如果不使用等号(=),则执行的是 直接初始化

平时情况下,这四种初始化方式可以相互等价使用,不过有几种特殊情况:
第一:使用拷贝初始化的时候(即使用=时),只能提供一个初始值。见P76页
第二:如果提供的是一个类内初始值,则只能使用拷贝初始化或使用花括号{}的形式初始化,记住不能使用圆括号()。见P64页
第三: 如果提供的是初始化元素值的列表,则只能把初始值都放在花括号里进行初始化,而不能放在圆括号里面:
vector<string> v2 = { "a", "ab", "the" }; //正确
vector<string> v1{"a", "ab", "the"}; //正确
vector<string> v1("a", "ab", "the"); //错误

七.对vector对象来说, 直接初始化的方式适用于三种情况:
(1)初始值已知并且数量较少
(2)初始值是另一个vector对象的副本
(3)所有元素的初始值都一样

八. vector对象的限制操作:
(1)如果循环体内部包含有向vector对象添加元素的句子,则不能使用范围for语句!!!
范围for语句:
string s;
for (auto c:s) {/**/}
(2)任何一种可能改变vector对象容量的操作, 比如push_back,都会使该vector对象的迭代器失效

九.箭头运算符(->)
箭头运算符把解引用和成员访问两个操作结合到了一起,即
it->empty() 和 (*it).empty() 表达的意思一样
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值