前言
标准库类型vector表示对象的集合,其中所有的对象的类型必须相同。集合中每个对象都有一个索引,用于访问对象,所以vector被称为容器。
一、定义和初始化vector
#include<iostream>
#include<vector>
# include <string>
using namespace std;
int main()
{
vector<int> v1; //v1是一个空vector,其中int为vector的类型
vector<int> v2(v1); //v2包含v1中的所有元素
vector<int> v2=v1;//等价于vector<int> v2(v1)
vector<int> v3(6,8);//v3中包含6个元素,且6个元素都是8
vector<int> v4(8);//v4包含了8个重复的执行了初始化操作的对象
vector<int> v5{ 1,2,3,4,5,6 };//v5包含了这6个元素
vector<int> v5={ 1,2,3,4,5,6 };//等价于vector<int> v5{ 1,2,3,4,5,6 }
}
二、向vector添加元素
向vector添加元素时,使用push_back()函数,将元素插入vector的尾端。
#include<iostream>
#include<vector>
# include <string>
using namespace std;
int main()
{
vector<int> v1;
int word=1;
while (cin >> word)
{
v1.push_back(word);
}
}
当输入完成后,需要用“/0”使循环退出
三,其他vector操作
除了push_back以外,vector还提供了其他几种操作,总体上跟string相似。
#include<iostream>
#include<vector>
# include <string>
using namespace std;
int main()
{
vector <int> v;
vector <int> v2;
v.empty();//如果v不含有任何元素,则返回真,否则返回假
v.size();//返回v中元素个数;
v[ 2 ];//返回v上第二个元素的引用
}
四,vector中的元素的输出
使用函数for
for(auto i,vector);
将vector中的元素依次赋给i。
具体操作如下:
#include<iostream>
#include<vector>
# include <string>
using namespace std;
int main()
{
vector <int> v{1,2,3,4,5,6,7};
int i;
for (auto i : v)
cout << i << endl;
}
运行结果:
1
2
3
4
5
6
7
五,迭代器的使用
其实我们除了使用下标进行访问vector对象的元素,还可以使用迭代器,迭代器类似于指针类型,但和指针不一样的是,迭代器不是使用取地址符,有迭代器的类型可以同时拥有返回迭代器的成员,如下:
auto b=v.begin();
auto c=v.end();
其中v为vector类型,其中begin是负责指向第一个元素的迭代器,end负责指向尾元素的下一位置。
#include<iostream>
#include<string>
#include<vector>
//#include <ctype.h>
using namespace::std;
int main()
{
string str("i love you");
for (auto i = str.begin(); i != str.end(); ++i)
*i = toupper(*i);
cout << str << endl;
system("pause");
return 0;
}
应用将字母转换为大写
六,迭代器的运算
可把迭代器传回的元素当作指针,进行位置的加减以及位置的判断
应用:首位和后位的相加:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> ivec;
int i;
while (cin >> i)
{
ivec.push_back(i);
}
for (auto it = ivec.begin(); it != ivec.end() - 1; ++it)
cout << *it + *(it + 1) << " ";
cout << endl;
for (auto it1 = ivec.begin(), it2 = ivec.end() - 1;it1 < it2; ++it1, --it2)
cout << *it1 + *it2 << " ";
cout << endl;
return 0;
}
总结
介绍了vector等相关用法,相比较于数组,vector的存储空间是动态,相对比较灵活。