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