基本操作方法:
一、创建对象的方法:
1、指定容器大小:
vector<元素类型>对象名(容器大小);
vector<int> v1(10);//创建一个容量大小为10的int类型容器v1
vector<string> v2(5);//创建一个容量大小为5的string类型容器
2、指定初始值
vector<元素类型>对象名(容器大小,元素初始值);
vector<int> v1(10, 1); //10个元素的值都为1
vector<string> v2(3, 'aaa'); //3个元素的初始值都为“aaa”
3、列表初始化(带不带“ = ”都可以)
vector<int> v1{ 10,1 }; //v1有两个元素:10,1
vector<int> v2 = { "a","b","c" }; // v2有三个元素分别是字符串:"a","b","c"
4、初始化状态为空
vector<int> v1; //创建一个int类型的空对象
5、用对象来初始化一个容器:
vector<int> v1(10, 1);
vector<int> v2(v1); //用v1来初始化v2
vector<int> v3 = v2; //用v2数组给v3数组赋值
一、获取容量和大小:
v.capacity(); //获取容量
v.size(); //获取大小
二、赋值函数(调用vector的函数成员assign()来赋值:
v.assign(n, elem);//将n个elem元素赋值给容器
v, assign(begin, end);//将[begin,end)区间中的元素赋值给容器
三、访问容器中的元素
1、下标法:
v1[i];
2、成员函数法:
v.at(int idx);
四、从尾部插入和删除元素
v.push_back(type elem& t);
v.pop_back();
五、获取头部和尾部的元素
v.front();
v.back();//分别返回容器头尾元素的引用
v.begin();
v.end();// 分别为返回第一个和最后一个元素的迭代器
六、插入和删除元素
v.insert(pos, elem);//在pos位置上插入元素elem返回新数据 的位置
v.insert(pos, n, elem);//在pos位置上插入n个elem元素,无返回值
v.insert(pos, begin, end); 在pos位置上插入[begin, end)区间的数值无返回值
erase()用于移除容器中的元素
v.erase(pos); //移除pos位置上的元素,返回下一个数值的位置
v.erase(begin, end);//移除[begin,end)区间的元素,返回下一个元素的位置
向量的更多成员函数:
创建一个vector容器,然后调用push_back()函数向尾部添加元素,接着调用pop_back()函数移除末尾的元素代码:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
for (int i = 0; i < 10; i++)
v.push_back(i + 1);
for (int i = 0; i < 10; i++)
cout << v[i] << " ";
cout << endl;
v.pop_back();
for (int i = 0; i < 9; i++)
cout << v[i] << " ";
cout << endl;
system("pause");
return 0;
}
输出结果:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<char> v;
v.insert(v.begin(), 'a');//在头部位置插入元素
v.insert(v.begin(), 'b');
v.insert(v.begin(), 'c');
v.insert(v.begin() + 1, 5, 't');//在begin()+1位置插入5个t元素
for (int i = 0; i < 8; i++)
cout << v[i] << " ";
cout << endl;
cout << "erase elemes:\n";
v.erase(v.begin() + 1, v.begin() + 6);//删除区间中的5个元素
for (int i = 0; i < 5; i++)
cout << v[i] << " ";
cout << endl;
system("pause");
return 0;
}
运行结果:
向量成员函数运用举例:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v1(3, 6); //整形向量容器元素是6,6,6
cout << v1.size() << "\n";
for (vector<int>::size_type i = 0; i < v1.size(); i++)//size_type是无符号整形(此行是通过下标访问元素)
cout << v1[i];
cout << "\n";
for (vector<int>::iterator it1 = v1.begin(); it1 != v1.end(); it1++)
cout << *it1;//通过迭代器访问元素
cout << "\n";
vector<char> v2;
v2.push_back('C');
v2.push_back('D');
v2.push_back('A');
v2.push_back('E');
for (vector<int>::size_type i = 0; i < v2.size(); i++)//size_type是无符号整形(此行是通过下标访问元素)
cout << v2[i];
cout << "\n";
vector<char>::iterator it2;//定义字符型迭代器对象,it
it2 = v2.begin() + 2; //it指向第三个元素
v2.insert(it2, 'i'); //在It指向的位置插入i
for (vector<int>::size_type i = 0; i < v2.size(); i++)//size_type是无符号整形(此行是通过下标访问元素)
cout << v2[i];
cout << "\n";
system("pause");
return 0;
}
运行结果: