一、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;
}
對於下標操作符[]的使用有一點非常重要,就是僅能提取確實已存在的元素。試圖對不存在的元素進行下標操作是程序設計過程中經常發的錯誤,有可能會導致程序崩潰。