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