一、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;
}

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

string和vector的更多相关文章

  1. POJ 3096 Surprising Strings(STL map string set vector)

    题目:http://poj.org/problem?id=3096 题意:给定一个字符串S,从中找出所有有两个字符组成的子串,每当组成子串的字符之间隔着n字符时,如果没有相同的子串出现,则输出 &qu ...

  2. 编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个对立的元素存于vector中

    #include<iostream> #include<string> #include<vector> #include<fstream> using ...

  3. std::string,std::vector,std::accumulate注意事项

    在用string做字符串拼接时,会发现随着string的增大越来越慢,原因主要是string(和vector)是基于现行内存的数据结构,在海量数据时,经常会申请新的一块内存,把原有的数据拷贝过去然后再 ...

  4. Q&A:string、vector、iterator、bitset

    细节要点 getline(cin,string)与cin>>string 在VS2013中通过输入换行符\n,对getline以及cin的用法进行测试,但是并没有像文中所述遇到换行符停止读 ...

  5. 谈谈两种标准库类型---string和vector

    两种最重要的标准库---string和vector string和vector是两种最重要的标准库类型,string表示可变长的字符序列,vector存放的是某种给定类型对象的可变长序列. 一.标准库 ...

  6. LeetCode 205 Isomorphic Strings(同构的字符串)(string、vector、map)(*)

    翻译 给定两个字符串s和t,决定它们是否是同构的. 假设s中的元素被替换能够得到t,那么称这两个字符串是同构的. 在用一个字符串的元素替换还有一个字符串的元素的过程中.所有字符的顺序必须保留. 没有两 ...

  7. C++进阶 STL(1) 第一天 [容器,算法,迭代器] string容器 vector容器 deque容器

    课程大纲 02实现基本原理 容器,算法,迭代器 教室:容器 人:元素 教室对于楼:容器 序列式容器: 容器元素在容器中的位置是由进入容器的时间和地点来决定 序列式容器 关联式容器: 教室中 按年龄排座 ...

  8. 实战c++中的string系列--std:vector 和std:string相互转换(vector to stringstream)

    string.vector 互转 string 转 vector vector  vcBuf;string        stBuf("Hello DaMao!!!");----- ...

  9. C++ Split string into vector<string> by space

    在C++中,我们有时候需要拆分字符串,比如字符串string str = "dog cat cat dog"想以空格区分拆成四个单词,Java中实在太方便了,直接String[] ...

随机推荐

  1. CSS总结 最后的选择符和字体、元素常见样式

    在伪类选择符中,还有很多,其中比较有意思的是E:target 当我们想做出点击超链接后链接变色且其他链接变回原来的颜色时,就可以用到这个选择符 <a href="#a1" i ...

  2. CSS中相对定位与绝对定位

    看了几个讲解定位的博客,觉得还不错,分享之: 博客一:http://blog.sina.com.cn/s/blog_4bcf4a5e010008o0.html 文章中,主要需要参考的有两点: 1,相对 ...

  3. Android使用SharedPreference存储数据

    SharedPreference存储数据和文件存储更加方便的一点是可以按照一定的数据类型进行存储,同时取数据时也能够获取到相应的数据类型.它是按照map的方式来存储和读取数据的. MainActivi ...

  4. [Java Basics] Reflection

    For every type of object, the Java virtual machine instantiates an immutable instance of java.lang.C ...

  5. import和from import陷阱二

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 #from os import path import os.path path='/home/vamei/doc/file.txt' ...

  6. 图片标签img中,为什么使用alt属性没用

    alt属性 alt属性是为了给那些不能看到你文档中图像的浏览者提供文字说明的.所以alt属性的本意是用于替换图像,而不是为图像提供额外说明的,但是,在ie浏览器中,alt属性会变成文字提示,这本身是一 ...

  7. linux 启动weblogic的某服务报错

    问题如标题所示, 错误信息主要包括: weblogic.store.PersistentStoreException: [Store:280073]The file store"WLS_DI ...

  8. Hadoop及其相关组件简介

    一.大数据介绍 1.大数据指的是所涉及的数据量规模巨大到无法通过人工,在合理时间内达到截取.管理.处理.并整理成为人类所能解读的形式的信息. 2.大数据,可帮助我们能察觉商业趋势.判断研究质量.避免疾 ...

  9. 一个简单的linux线程池(转-wangchenxicool)

    线程池:简单地说,线程池 就是预先创建好一批线程,方便.快速地处理收到的业务.比起传统的到来一个任务,即时创建一个线程来处理,节省了线程的创建和回收的开销,响应更快,效率更高. 在linux中,使用的 ...

  10. [NOIP2009] 靶形数独(搜索+剪枝)

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的 ...