文章目录
1.容器大小
1.代码
#include<iostream>
#include<vector>
using namespace std;
int main()
{
//数组
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//容器 指定范围的复制
vector<int> intVector(arr + 0, arr + 10);
// 定义类型 取名字 数组头 复制的长度
//size max_size capacity
cout << intVector.size() << endl; //求当前大小
cout << intVector.max_size() << endl; //最大存储量
cout << intVector.capacity() << endl; //求出当前最多能容纳的元素个数
//resize() 重新设置容器大小
intVector.resize(5);
cout << intVector.size() << endl;
}
2.解释
vector <int> intVector(arr + 0 , arr + 10);
vector<数据类型> 容器名称( 数组的头 , 复制的长度)
int定义容器的类型,容器名称后面需要写长度
cout << intVector.size() << endl;
cout << intVector.max_size() << endl;
cout << intVector.capacity() << endl;
intVector.resize(5);
第一行求当前大小
第二行最大存储量
第三行求出当前最多能容纳的元素个数
第四行重新设置容器大小
3.运行结果
2.输入输出添加删除
1.代码
#include<iostream>
#include<vector>
using namespace std;
int main()
{
//数组
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//容器 指定范围的复制
vector<int> intVector(arr + 0, arr + 10);
// 定义类型 取名字 数组头 复制的长度
//pop_back() 删除向量中的最后一个元素
//push_back() 向尾部添加元素
for (int i = 0; i < 10; i++)
{
cout << intVector[i] << " ";
}
cout << endl;
intVector.pop_back();
for (int i = 0; i < 9; i++)
{
cout << intVector[i] << " ";
}
cout << endl;
cout << "---------------------------" << endl;
intVector.push_back(666);
for (int i = 0; i < 10; i++)
{
cout << intVector[i] << " ";
}
}
2.解释
intVector.pop_back();
intVector.push_back(666);
pop_back() 删除向量中的最后一个元素
push_back(i) 向尾部添加元素i
3.运行结果
3.指定范围复制
1.代码
#include<iostream>
#include<vector>
using namespace std;
int main()
{
//数组
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//容器 指定范围的复制
vector<int> intVector(arr + 0, arr + 10);
// 定义类型 取名字 数组头 复制的长度
//assign
//assign(first,last) 替换first到last的全部元素
int brr[12] = { 11,12,13,14,15,16,17,18,19,20,21,22 };
for (int i = 0; i < 10; i++)
{
cout << intVector[i] << " ";
}
cout << endl;
intVector.assign(brr + 1, brr + 11);
for (int i = 0; i < 10; i++)
{
cout << intVector[i] << " ";
}
cout << endl;
cout << "---------------------------" << endl;
//assign(num,val)以num个val的副本来替换原容器中的元素
intVector.assign(10, 111);
for (int i = 0; i < 10; i++)
{
cout << intVector[i] << " ";
}
cout << endl;
}
2.解释
intVector.assign(brr + 1, brr + 11);
intVector.assign(10, 111);
assign(first,last) 替换first到last的全部元素
assign(num,val)以num个val的副本来替换原容器中的元素
3.运行结果
4.插入元素
1.代码
#include<iostream>
#include<vector>
using namespace std;
int main()
{
//数组
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//容器 指定范围的复制
vector<int> intVector(arr + 0, arr + 10);
// 定义类型 取名字 数组头 复制的长度
//insert()
//insert(i,x) 把x插入到迭代器i指定的范围
for (int i = 0; i < 10; i++)
{
cout << intVector[i] << " ";
}
cout << endl;
intVector.insert(intVector.begin()+6,999);
for (int i = 0; i < 11; i++)
{
cout << intVector[i] << " ";
}
cout << endl;
cout << "---------------------------" << endl;
//insert(i,first,end) 把范围内的元素插入到指定位置上
intVector.insert(intVector.begin() + 3, intVector.begin() + 0, intVector.begin() + 3);
for (int i = 0; i < 14; i++)
{
cout << intVector[i] << " ";
}
cout << endl;
cout << "---------------------------" << endl;
//insert(i,n,x) 把x的n个副本插入到i中去
intVector.insert(intVector.begin() + 11,3,666);
for (int i = 0; i < 17; i++)
{
cout << intVector[i] << " ";
}
}
2.解释
intVector.insert(intVector.begin()+6,999);
intVector.insert(intVector.begin() + 3, intVector.begin() + 0, intVector.begin() + 3);
intVector.insert(intVector.begin() + 11,3,666);
insert(i,x) 把x插入到迭代器i指定的范围
insert(i,first,end) 把范围内的元素插入到指定位置上
insert(i,n,x) 把x的n个副本插入到i中去
3.运行结果
5.删除元素
1.代码
#include<iostream>
#include<vector>
using namespace std;
int main()
{
//数组
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//容器 指定范围的复制
vector<int> intVector(arr + 0, arr + 10);
// 定义类型 取名字 数组头 复制的长度
//erase()
//erase(strat,end) 范围删除
for (int i = 0; i < 10; i++)
{
cout << intVector[i] << " ";
}
cout << endl;
intVector.erase(intVector.begin() + 5, intVector.begin() + 10);
for (int i = 0; i < 5; i++)
{
cout << intVector[i] << " ";
}
cout << endl;
cout << "---------------------------" << endl;
//erase(i) 通过迭代器指定删除
intVector.erase(intVector.begin() + 3);
for (int i = 0; i < 4; i++)
{
cout << intVector[i] << " ";
}
}
2.解释
intVector.erase(intVector.begin() + 5, intVector.begin() + 10);
intVector.erase(intVector.begin() + 3);
erase(strat,end) 范围删除
erase(i) 通过迭代器指定删除
3.运行结果
6.判断与清除
1.代码
#include<iostream>
#include<vector>
using namespace std;
int main()
{
//数组
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//容器 指定范围的复制
vector<int> intVector(arr + 0, arr + 10);
// 定义类型 取名字 数组头 复制的长度
//empty() clear()
//empty 判断当前容器是否为空 空 返回1,不空 返回0
//clear 清空当前容器
if (intVector.empty())
{
cout << "容器为空" << endl;
}
else
{
cout << "容器不为空" << endl;
}
intVector.clear();
if (intVector.empty())
{
cout << "容器为空" << endl;
}
else
{
cout << "容器不为空" << endl;
}
}
2.解释
intVector.empty()
intVector.clear()
empty() 判断当前容器是否为空 空 返回1,不空 返回0
clear() 清空当前容器
3.运行结果
7.返回元素迭代器
1.代码
#include<iostream>
#include<vector>
using namespace std;
int main()
{
//数组
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//容器 指定范围的复制
vector<int> intVector(arr + 0, arr + 10);
// 定义类型 取名字 数组头 复制的长度
// 迭代器
//begin() end() 返回向量中第一个和最后一个元素的迭代器
//for 在for循环中使用
//迭代器使用类似于指针
for (auto it = intVector.begin(); it != intVector.end(); it++)
{
cout << *it << " ";
}
cout << endl;
cout << "---------------------------" << endl;
// 反向迭代器
// rbegin() rend() 返回向量中最后一个和第一个元素的迭代器
for (auto it = intVector.rbegin(); it != intVector.rend(); it++)
{
cout << *it << " ";
}
}
2.解释
for(auto it = intVector.begin(); it != intVector.end(); it++)
for (auto it = intVector.rbegin(); it != intVector.rend(); it++)
begin() end() 返回向量中第一个和最后一个元素的迭代器
rbegin() rend() 返回向量中最后一个和第一个元素的迭代器
在for循环中使用的时候类似于指针
3.运行结果
8.交换两个容器值
1.代码
#include<iostream>
#include<vector>
using namespace std;
int main()
{
//数组
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//容器 指定范围的复制
vector<int> a(arr + 0, arr + 10);
// 定义类型 取名字 数组头 复制的长度
vector<int> b(10,666);
for (int i = 0; i < 10; i++)
{
cout << a[i] << " ";
}
cout << endl;
for (int i = 0; i < 10; i++)
{
cout << b[i] << " ";
}
cout << endl;
cout << "---------------------------" << endl;
a.swap(b);
for (int i = 0; i < 10; i++)
{
cout << a[i] << " ";
}
cout << endl;
for (int i = 0; i < 10; i++)
{
cout << b[i] << " ";
}
}
2.解释
a.swap(b)
a.swap(b),将a和b的元素进行交换