• 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末端之后的下一个元素。

  • 相关阅读:
    Creating and Using Static Libraries for iPhone using Xcode 4.3
    Build fat static library (device + simulator) using Xcode and SDK 4+
    How to safely shut down a loading UIWebView in viewWillDisappear?
    处理iOS设备的屏幕旋转
    Instruments Tutorial for iOS: How To Debug Memory Leaks【转】
    自定义UINavigationBar的背景【转】
    iOS编程——Objective-C KVO/KVC机制[转]
    ios PNG Crush error (PNG图片错误)
    实现自定义延迟加载的滚动视图
    Linux添加或修改ssh端口
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6173021.html
Copyright © 2020-2023  润新知