zoukankan      html  css  js  c++  java
  • string和vector

    一、String对象
    1、string s;
         s.size();

    //返回的是s中字符的个数,也是s的长度;

    //string对象最后没有加空字符

    //size()返回的是string::size_type类型,也就是unsigned类型,而不是int类型
    2、两个string对象的相加

    string标准库中重载了"+"运算符;

       string s1("hollo");

       string s2("world");

       string s3=s1+s2;  //ok

    但要注意的是,+操作符的左右操作数必须至少有一个是string类型:

    string s4="hello"+"world";  //error:no string operand

    string s5=s1+", "+"world";  //ok

    string s6="hello"+", "+s2;  //error

    二、标准库vector类型
    1、vector对象的定义和初始化

    几种初始化vector对象的方式

    vector<T> v1;

    vector保存类型为T的对象。默认构造函数,v1为空

    vector<T> v2(v1);

    v2为v1的一个副本

    vector<T> v3(n,i);

    V3包含n个值为i的元素

    vector<T> v4(n);

    V4含有值初始化的元素的n个副本

    vector<int> ivec;

    vector<sales_item> Sales_vec;

    虽然可以对给定元素的个数的vector对象预先分配内存,但更有效的方法是先初始化一个空的vector对象,然后再动态增加元素。(vector和数组很像,但数组不能动态增加元素,而且值得注意的是vector下标操作不添加元素,在下面的3中讨论)

    2、vector对象的size

    vector对象的成员函数size返回相应vector类定义的size_tyoe的值,但值得注意的是使用size_type类型时,必须指出该类型是在哪里定义的。vector类型总是包括vector的元素类型:

    vector<int>::size_type    //ok

    vector::sizet_ype        //error

    3、下标操作不添加元素

    #include<iostream>

    #include<vector>

    using std::cin;

    using std::cout;

    using std::endl;

    using std::vector;

    int main(){
                  vector<int> ivec;   //empty vector
                  //for(vector<int>::size_type i=0;i!=10;++i)
                  //     ivec[i]=i;

    /*试图在ivec中插入10个元素,元素值依次为0-9的整数。但是,这里的ivec是空的vector对象,而且下标只能获取已存在的元素。*/

           for(vector<int>::size_type i=0;i!=10;++i)
                  ivec.push_back(i); //push_back(t) 在末尾增加一个值为t的元素
                  for(vector<int>::size_type i=0;i!=ivec.size();++i)
                         cout<<ivec[i]<<" ";
                  cout<<endl;

                  return 0;
    }

    对于下标操作符[]的使用有一点非常重要,就是仅能提取确实已存在的元素。试图对不存在的元素进行下标操作是程序设计过程中经常发的错误,有可能会导致程序崩溃。

  • 相关阅读:
    回调函数中调用类中的非静态成员变量或非静态成员函数
    [NewCoder]复杂链表的复制
    C++对象模型--总结
    chunk writer 中需要对抛错的交易进行回滚,同时又要在其他表中记录是哪一笔交易记录失败
    为什么因式分解n=pq分别得到pq是求解密钥中d的关键
    DB2 创建数据库
    socket 收发报文小程序
    Zbrush Topogun 备忘
    过度科目理解
    借贷记账思考2015.12.28
  • 原文地址:https://www.cnblogs.com/mzct123/p/5535723.html
Copyright © 2011-2022 走看看