zoukankan      html  css  js  c++  java
  • 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末端之后的下一个元素。

  • 相关阅读:
    C++快速排序
    C++冒泡排序
    为什么Excel创建一个新的工作簿就会初始化三个worksheet
    为什么游戏需要英雄
    2015.11.18——Lua中文教程
    [国家集训队2012]JZPFAR
    后缀数组小结?
    [BZOJ 2738]矩阵乘法
    [BZOJ 3221][Codechef FEB13] Obserbing the tree树上询问
    [BZOJ 4999]This Problem Is Too Simple!
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332733.html
Copyright © 2011-2022 走看看