using 命名空間
我們所使用的庫函數都是屬於命名空間std的,當使用std的cin方法時,需要通過std::cin來調用,當大量調用庫函數時這種調用方法無疑加大了代碼工作量,這時可以在文件頭部添加using聲明。
注意頭文件中不應包含using聲明,一般在cpp文件所有引用頭文件之後添加using聲明
using聲明形式如下:
using namespace::name;
標準庫類型vectoer
1、vector是一種容器,也是一個類模板。它並非類型,由vectoer生成的類型必須包括vector中元素的類型,例如vector<int>。
2、vector中的元素是同一類型,vector能容納絕大多數類型的對象作爲其元素,但由於引用不是對象,所以不存在包含引用的vector,其他大多數內置類型(算術類型、字面值常量)和類類(string等)型都可以構成vector對象,組成vector的元素也可以是vector。
3、vector無需事先聲明大小,可動態添加元素。
4、僅當已知vector大小時才能使用vector下標。p3.18
5、vector支持“<””>”等比較的運算符,但注意不是所有容器都支持這種比較運算符,例如迭代器。
初始化vector對象的方法:
vector<T> v1
vector<T> v2(v1)
vector<T> v2=v1
vector<T> v3(n,val)
vector<T> v4(n)
vector<T> v5{a,b,c,...}
<vetor<T> v5={a,b,c,...}
vector支持的操作:
v.empty()
v.size()
v.push_back(t)
v[n]
v1=v2
v1={a,b,c,...}
v1==v2
v1!=v2
<,<=,>,>=
p3.16
vector<int> v1{7,2,53,4}; int val=v1.size(); #輸出vector大小 cout<<val<<endl; for (auto i:v1) cout<<i<<" "; #輸出vector元素 cout<<endl;
3.17
vector<string> s1; string word; string finish="finish"; while(getline((cin,word)&&word!=finish) s1.push_back()=word; int val=s1.size(); cout<<val<<endl;int k; for(k=0;k<val;k++){ for(auto &i:s1[k]) i=toupper(i); } int j; for (j=0;j<val;j++) cout<<s1[j]<<endl;
3.20
vector<int> v1; int ival; while (cin >> ival&&ival != 000){ v1.push_back(ival); } decltype(v1.size()) size = v1.size(); decltype(v1.size()) k; cout << size << endl; vector<int> v2; for (k = 1; k!=size; k++){ int tmp = v1[k - 1] + v1[k]; v2.push_back(tmp); #v2向量用於保存v1前後元素的和 } for (decltype(v2.size()) f = 0; f!=v2.size(); f++) #循環條件中!=也可用<替代,但注意不是所有容器都支持<、>運算符。 cout << v2[f]<< endl; }
p3.20
vector<int> v1; int ival; while (cin >> ival&&ival != 000) v1.push_back(ival); int size = v1.size(); cout << size<< endl; int k; vector <int> v2; for (k = 0; k < size / 2 ; k++){ int tmp = v1[k] + v1[size - k - 1]; v2.push_back(tmp); } if (v1.size()%2==1) { v2.push_back(v1[size/2]*2); } for (decltype(v2.size()) f = 0; f < v2.size(); f++){ #此處不能聲明爲int f,因爲f必須與v2.size()的返回類型一致 cout << v2[f] <<endl; }