C++ Primer 有感(标准库类型)

1.当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的:

string s1= "hello";
 sring s2="world";
 string s3=s1 + ", ";          //OK
 string s4 = "hello" + ",";  //error
 string s5 = s1 + "," + "world";  //ok
 string s6= "hello"+","+s2; //error

2.vector不是一种数据类型,而只是一个类模板,可用来定义任意多种数据类型。vector类型的每一种都指定了其保存元素的类型。因此,vector<int>和vector<string>都是数据类型。


3.使用size_type类型时,必须指出该类型是在哪里定义的。vector类型总是包括元素类型:

vector<int>::size_type   //OK
 vector::size_type   //error


4.下标操作部添加元素

   初学C++的程序员可能会认为vector的下标操作可以添加元素,其实不然:

vector<int> ivec;
for (vector<int>::size_type ix= 0;ix != 10;++ix)
     ivec[ix] = ix;

上述程序试图在ivec中插入10个新元素。但是,这里ivec是空的vector对象,而且下标只能用于获取已存在的元素。

    这个循环的正确写法应该是:

 for (vector<int>::size_type ix=0;ix != 10;++ix)
      ivec.push_back(ix);

必须是已存在的元素才能用于下标操作符进行索引。通过下标操作进行赋值时,不会添加任何元素。


5.每个容器类型还定义了一种名为const_iterator的类型,我们可以得到一个迭代器,它自身的值可以改变,但不能用来改变其所指向的元素的值。可以对迭代器进行自增以及使用解引用操作符来读取值,但不能对该元素值赋值。


6.difference_type表示两个迭代器对象的距离(iter1 - iter2 ),difference_type是 signed类型,因为减法运算可能产生负数的结果。该类型可以保证足够大以存储任何两个迭代器对象间的距离。iter1与iter2两者必须都指向同一vector中的元素,或者指向vector末端之后的下一个元素。

转载于:https://www.cnblogs.com/hehehaha/p/6332733.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值