-
3.3 vector容器
- vector初始化的真正含义依赖于圆括号还是花括号,eg.
vector<int>v1(10)//v1有10个元素,每个元素都是0
vector<int>v1{10}//v1有1个元素,值为10
vector<int>v1(10,1)//v1有10个元素,每个的值为1
vector<int>v1{10,1}//v1有2个元素,值为10和1
圆括号是表明vector对象的容量
花括号是列表初始化,里面的值代表元素的初始值
- vector对象中元素的访问使用范围for语句
#include <iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
int a;
vector<int>v1;
while(cin>>a)
{
v1.push_back(a);
}
for(auto c:v1)//范围for循环
cout<<c<<endl;
return 0;
}
vector内对象的索引:v1[i],类似数组的索引,i从0开始,只能对已经存在的元素进行下标索引操作,
习题3.17
#include <iostream>
#include<cstring>
#include<vector>
using namespace std;
int main()
{
string a;
char j='u';
vector<string>v1;
while(cin>>a)
{
v1.push_back(a);
}
for(auto &x:v1)
{
for(auto &c:x)
{
c=toupper(c);//c的值修改后记得赋给c
}
cout<<x<<endl;
}
return 0;
}
-
3.4 迭代器
迭代器的使用大同小异,首先定义一个迭代器指向容器的第一个对象,使用迭代器进行for循环对容器内的对象进行操作,有点类似于数组下标的含义,但是迭代器表示的是容器内对象的“下标”。
习题3.21
#include <iostream>
#include<cstring>
#include<vector>
using namespace std;
int main()
{
int a;
vector<int>v1;
while(cin>>a)
{
v1.push_back(a);
}
for(auto it=v1.cbegin();it!=v1.cend();++it)//迭代器的使用主要是这句话
cout<<*it+*(it+1)<<endl;
return 0;
}
习题3.22
#include <iostream>
#include<cstring>
#include<vector>
using namespace std;
int main()
{
int a;
vector<int>v1;
for(int i=0;i<10;i++)
{
cin>>a;
v1.push_back(a);
}
for(auto it=v1.cbegin();it!=v1.cend();++it)
cout<<2*(*it)<<endl;
return 0;
}
习题3.24
#include <iostream>
#include<cstring>
#include<vector>
using namespace std;
int main()
{
int a;
vector<int>v1;
while(cin>>a)
{
v1.push_back(a);
}
for(auto it1=v1.begin(),it2=v1.end();it1!=it2;++it1)
{
--it2;//注意end()指向容器尾元素的下一位置,所以要先减1,使it2指向最后一个元素
cout<<*it1+*it2<<endl;
}
return 0;
}