导入头文件
#include //使用vector需要的头文件
#include //标准输入输出头文件
using namespace std; //使用标准命名空间
这里实现<<
的运算符重载,方便输出vector
template <typename T>
ostream& operator<<(ostream& os, const vector<T>& vec)
{
if (vec.empty())
{
os << "[]" << endl;
return os;
}
os << "[";
for (auto i : vec) //遍历容器里面的数据
{
os << i << ",";
}
os << "\b]" << endl;
return os;
}
//vector 的初始化
void test1()
{
cout<<"这是测试1:"<<endl;
vector<int> vec1; //声明一个vector,存放int类型数据
vector<int> vec2(10); //声明一个vector 长度为10 默认会初始化为0
vector<int> vec3 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//初始化列表
vector<int> vec4(10, 10); //第一个参数是数组长度,第二个参数是全部填充的数据
cout << vec2; //输出vec2,这里需要运算符重载
cout << vec3;
cout << vec4 << endl;
}
void test2()
{
cout<<"这是测试2:"<<endl;
vector<char> vec(10, 'a');
cout << vec.size() << endl; //size获取vector当前数组的长度
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << endl;
}
//使用迭代器
vector<char>::iterator iter = vec.begin(); //begin() 返回迭代器的首地址
*iter = 'b'; //通过运算符重载进行解引用
cout << vec;
//auto关键字可以自动识别类型,定义时需要初始化
for (auto iter = vec.begin(); it != vec.end(); it++)
{
cout << *iter << " ";
}
cout << endl;
}
void test3()
{
cout<<"这是测试3:"<<endl;
vector<int> vec = { 1, 2, 3, 4, 5 };
cout << vec << endl;
cout << vec.size() << endl;
vec.push_back(10); //从尾部插入一个数据 10
cout << vec;
vec.push_back(30); //vector可以自动增长长度 push_back后会自动添加数据
cout << vec << endl;
cout << vec.size() << endl;
vec.pop_back(); //从尾部删除一个数据
cout << vec << endl;
cout << vec.size() << endl;
while (!vec.empty()) //empty() 判断是否为空 是返回 true 不是就返回false
{
vec.pop_back();
}
cout << vec;
cout << vec.size();
}
void test4()
{
cout<<"这是测试4:"<<endl;
vector<int> vec; //定义一个vector
vec.push_back(10); //从尾部插入一个数据
vec.pop_back(); //从尾部删除一个数据
vector<int> vec2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
vec2.insert(vec2.begin() + 3, 10);
cout << vec2 << endl;
vec2.erase(vec2.begin()+7); // //从指定的位置删除(擦除)一个元素
cout << vec2;
vector<double> vec3(20,6);
cout << vec3;
vec3.resize(10); //重新调整大小
cout << vec3;
vec3.resize(15);
cout << vec3<<endl; //resize比原来长度要小,则从后面截取,如果比原来大,则在后面补0
vector<int> vec4 = { 4, 6, 2, 1, 4, 98, 65, 78, 15 };
cout << vec4;
vec4.assign({1,2,3,5,7,9,10}); //重新分配内存空间,相当于重新初始化了
cout << vec4;
vec4.assign(10, 6);
cout <<"capacity:"<< vec4.capacity()<<endl; //返回一个该容器实际中占用的空间大小
vector<int>vec5 = { 1, 2, 3, 4, 5 };
cout << vec5.front() << endl; //获取第一个元素
cout << vec5.back() << endl; //获取尾部元素
cout << vec5[2] << endl;
cout << vec5.at(2) << endl;
vec5.clear(); //清除所有数据,size也会变成0 resize(0)也能实现 assign(0,0)
cout << vec5;
}
int main()
{
test1();
test2();
test3();
test4();
return 0;
}
vector动态数组使用起来是很方便的,在实际的开发中也经常用到,希望这篇文章能够对大家有所帮助,今天的分享就到这里了。祝大家学习进步~