一:vector容器中存放自定义数据类型
#include<iostream>
using namespace std;
#include<vector>
#include<string>
// vector容器中存放自定义数据类型
class Person
{
public:
Person(string name, int age)
{
this -> m_Name = name;
this -> m_Age = age;
}
string m_Name;
int m_Age;
} ;
void test01()
{
vector<Person>v;
Person p1("aaa",10);
Person p2("bbb",20);
Person p3("ccc",30);
Person p4("ddd",40);
Person p5("eee",50);
// 向容器中添加数据
v.push_back(p1);
v.push_back(p2);
v.push_back(p3);
v.push_back(p4);
v.push_back(p5);
// 遍历容器中的数据
for(vector<Person>::iterator it = v.begin();it != v.end();it++){
cout
<< "姓名" << it -> m_Name
<< " "
<< (*it).m_Age << endl;
}
}
void test02()
{
vector<Person*>V;
Person p1("aaa",10);
Person p2("bbb",20);
Person p3("ccc",30);
Person p4("ddd",40);
Person p5("eee",50);
// 向容器中添加数据
V.push_back(&p1);
V.push_back(&p2);
V.push_back(&p3);
V.push_back(&p4);
V.push_back(&p5);
// 遍历容器中的数据
for(vector<Person*>::iterator it = V.begin();it != V.end();it++){
cout
<< "姓名" << (*it) -> m_Name
<< " "
<< (*it) -> m_Age << endl;
}
}
void test03() // 容器嵌套容器
{
vector< vector<int> >v0;
// 创建小容器
vector<int>v1;
vector<int>v2;
vector<int>v3;
vector<int>v4;
// 向小容器中添加数据
for(int i = 0;i < 4; i++)
{
v1.push_back(i + 1);
v2.push_back(i + 2);
v3.push_back(i + 3);
v4.push_back(i + 4);
}
// 将小容器插入到大容器中
v0.push_back(v1);
v0.push_back(v2);
v0.push_back(v3);
v0.push_back(v4);
// 通过大容器,把所有的数据遍历一遍
for(vector< vector<int> >::iterator it = v0.begin(); it != v0.end(); it++)
{
for(vector<int>::iterator vit = (*it).begin();vit != (*it).end(); vit++)
{
cout << *vit << " ";
}
cout << endl;
}
}
int main()
{
test01();
cout << "------" << endl;
test02();
cout << "------" << endl;
test03();
return 0;
}
二:vector容器构造
#include<iostream>
using namespace std;
#include<vector>
void printVector(vector<int>v)
{
for(vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
// vector 容器构造
void test01()
{
// 默认构造 无参构造
vector<int>v1;
for(int i = 0; i < 10; i++)
{
v1.push_back(i);
}
printVector(v1);
// 通过区间的方式构造
vector<int>v2(v1.begin(),v1.end());
printVector(v2);
// n个elem方式构造
vector<int>v3(10,7);
printVector(v3);
// 拷贝构造
vector<int>v4(v3);
printVector(v4);
}
int main()
{
test01();
return 0;
}
三:vector赋值
#include<iostream>
using namespace std;
#include<vector>
void printVector(vector<int>v)
{
for(vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
// vector 赋值
void test01()
{
vector<int>v1;
for(int i = 0; i < 10; i++)
{
v1.push_back(i);
}
printVector(v1);
// 赋值 operator=
vector<int>v2;
v2 = v1;
printVector(v2);
// assign
vector<int>v3;
v3.assign(v1.begin(),v1.end());
printVector(v3);
// n个elem 方式赋值
vector<int>v4;
v4.assign(10,100);
printVector(v4);
}
int main()
{
test01();
return 0;
}
四: vector容器的容量和大小操作
#include<iostream>
using namespace std;
#include<vector>
void printVector(vector<int>v)
{
for(vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
// vector容器的容量和大小操作
void test01()
{
vector<int>v1;
for(int i = 0; i < 10; i++)
{
v1.push_back(i);
}
printVector(v1);
if(v1.empty())
{
cout << "v1为空" << endl;
}
else
{
cout << "v1不为空" << endl;
cout << "v1的容量为:" << v1.capacity() << endl;
cout << "v1的大小为:" << v1.size() << endl;
}
// 重新指定大小
v1.resize(15,100); // 利用重载版本,可以指定默认填充值,参数2
printVector(v1); // 如果不指定默认填充值,则默认0填充
v1.resize(5); // 如果重新指定的比原来短,则超出部分会被删掉
printVector(v1);
}
int main()
{
test01();
return 0;
}
五:vector插入和删除
#include<iostream>
using namespace std;
#include<vector>
void printVector(vector<int>v)
{
for(vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
// vector 插入和删除
void test01()
{
vector<int>v1;
// 尾插
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
v1.push_back(40);
v1.push_back(50);
printVector(v1);
// 尾删
v1.pop_back();
printVector(v1);
// 插入
v1.insert(v1.begin()+2,100); // 第一个参数是迭代器,第二个是值
printVector(v1);
v1.insert(v1.begin()+1,3,9); // 第一个是迭代器,第二个是数量,第三个是值
printVector(v1);
// 删除
v1.erase(v1.begin());
printVector(v1);
v1.erase(v1.begin(),v1.begin()+2); // 删除多个
printVector(v1);
}
// vector 存取
void test02()
{
vector<int>v1;
for(int i = 0; i < 10; i++)
{
v1.push_back(i);
}
// 利用 [] 访问元素
for(int i = 0; i < v1.size(); i++)
{
cout << v1[i] << " ";
}
cout << endl;
// 利用 at 访问元素
for(int i = 0; i < v1.size(); i++)
{
cout << v1.at(i) << " ";
}
cout << endl;
// 获取第一个元素
cout << "第一个元素为:" << v1.front() << endl;
// 获取最后一个元素
cout << "最后一个元素为:" << v1.back() << endl;
}
// vector容器互换
void test03()
{
// 基本使用
vector<int>v1;
for(int i = 0; i < 10; i++)
{
v1.push_back(i);
}
printVector(v1);
}
int main()
{
test01();
cout << "-----" << endl;
test02();
cout << "-----" << endl;
test03();
return 0;
}
更多内容大家可以前往我的个人博客浏览:eyes++的个人空间
本文详细介绍了C++标准库中的vector容器的使用,包括如何存储自定义类型、构造、赋值、容量与大小操作以及插入和删除元素。通过示例展示了vector的基本操作,如push_back、pop_back、insert、erase等,并演示了如何遍历和访问vector中的元素。此外,还涉及了vector的resize方法以及空检查。
424

被折叠的 条评论
为什么被折叠?



