Vector容器嵌套容器
void Vector()
{
std::vector<std::vector<int>> V;
//创建小容器
std::vector<int> v1;
std::vector<int> v2;
std::vector<int> v3;
std::vector<int> v4;
std::vector<int> v5;
//向小容器中添加数据
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);
v5.push_back(i + 5);
}
//将小容器添加到大容器中
V.push_back(v1);
V.push_back(v2);
V.push_back(v3);
V.push_back(v4);
V.push_back(v5);
//通过大容器遍历数据
for (std::vector<std::vector<int>>::iterator it = V.begin(); it != V.end(); it++)
{
for (std::vector<int>::iterator vit = (*it).begin(); vit != (*it).end(); vit++)
{
std::cout << *vit << " ";
}
std::cout << std::endl;
}
}
(*it)解引用出来的是存放小容器的地址,即存放小容器std::vector<int>的地方,此时的小容器可以看作大容器的一个实例
Vector容器赋值
方法:
- vector& operator=(const vector &vec); 重载等号赋值
- assign(beg,end) 将[beg,end]区间中的数据拷贝赋值给本身
- assign(n,elem) 将n个elem拷贝赋值给本身
首先构造打印函数
void Printvector(std::vector<int>& V)
{
for (std::vector<int>::iterator it = V.begin(); it != V.end(); it++)
{
std::cout << *it << " ";
}
std::cout << std::endl;
}
void Vector()
{
std::vector<int> V1;
for (int i = 0; i < 10; i++)
{
V1.push_back(i);
}
Printvector(V1);
// 赋值 operator=
std::vector<int> V2;
V2 = V1;
Printvector(V2);
//assign
std::vector<int> V3;
V3.assign(V1.begin(), V1.end());
Printvector(V3);
//n和elem赋值
std::vector<int> V4;
V4.assign(10, 100);
Printvector(V4);
}
Vector容量和大小
方法:
- empty() 判断容器书否为空
- capacity() 容器的容量
- size() 返回容器中元素的个数
- resize(int,num) 重新指定容器的长度为num,若容器边长,则以默认值填充新位置;若容器变短,则末尾超出容器长度的元素被删除。
- resize(int num,elem) 重新指定容器的长度为num,若容器边长,则以elem值填充新位置;若容器变短,则末尾超出容器长度的元素被删除。
void Vector()
{
std::vector<int> V1;
for (int i = 0; i < 10; i++)
{
V1.push_back(i);
}
Printvector(V1);
if (V1.empty())
{
std::cout << "V1为空" << std::endl;
}
else
{
std::cout << "V1不为空" << std::endl;
std::cout << "V1的容量是:" << V1.capacity() << std::endl;
std::cout << "V1的大小是:" << V1.size() << std::endl;
}
V1.resize(15);
Printvector(V1);
V1.resize(20,100);
Printvector(V1);
V1.resize(5);
Printvector(V1);
}