1.Vector
<1>.定义方式及组成:
#include<iostream>
#include<vector>
using namespace std;
vector<//数据类型>//容器名字
如:
vector<int> vec; //定义一个int类型的名为vec的容器
vector<double> vec1;
vector<long long> vec2;
int main()
{
}
<2>.vector的基本用法
(1).在容器末尾添加元素:
push_back() // emplace_back()
#include<iostream>
#include<vector>
using namespace std;
vector<int>vec;
int main()
{
int n,x;
cin >> n;
while(n--)
{
cin>>x;
vec.push_back(x); //插入n个数!
//vec.emplace_back(x);
}
return 0;
}
<2>遍历容器内元素的方法:
#include<iostream>
#include<vector>
#include<iterator> //迭代器头文件
#include<bits/stdc++.h>
using namespace std;
vector<int>vec;
int main()
{
int n,x;
cin >> n;
while(n--)
{
cin>>x;
vec.push_back(x);
}
// 法1:(迭代器)
std::vector<int>::iterator it; //针对vector定义一个名为it的迭代器
for(it =vec.begin();it!=vec.end();it++)
{
cout << (*it) <<"\n";
}
/*
逆序输出:
for(auto it=vec.rbegin();it!=rend();it++)
{
cout << (*it) <<"\n";
}
*/
/* 法2:(数组)
for(int i=0;i<vec.size();i++)
{
cout << vec[i] << "\n";
}
逆序输出:
for(int i=vec.size();i>=0;i--)
{
cout << vec[i] << "\n";
}
*/
/* 法3:(auto : 自动识别数据类型)
for(auto j : vec){
cout << j << "\n";
}*/
return 0;
}
(3)排序与翻转:
#include<iostream>
#include<vector>
#include<iterator> //迭代器头文件
#include<bits/stdc++.h>
using namespace std;
vector<int>vec;
int main()
{
int n,x;
cin >> n;
while(n--)
{
cin>>x;
vec.push_back(x);
}
//排序:
sort(vec.begin(),vec.end());
for(auto j : vec){
cout << j << "\n";
}
return 0;
}
测试结果:
翻转:
#include<iostream>
#include<vector>
#include<iterator> //迭代器头文件
#include<bits/stdc++.h>
using namespace std;
vector<int>vec;
int main()
{
int n,x;
cin >> n;
while(n--)
{
cin>>x;
vec.push_back(x);
}
//排序:
sort(vec.begin(),vec.end());
//翻转:
reverse(vec.begin(),vec.end());
for(auto j : vec){
cout << j << "\n";
}
return 0;
}
测试1:
#include<iostream>
#include<vector>
#include<iterator> //迭代器头文件
#include<bits/stdc++.h>
using namespace std;
vector<int>vec;
int main()
{
int n,x;
cin >> n;
while(n--)
{
cin>>x;
vec.push_back(x);
}
//排序:
sort(vec.begin(),vec.end());
//翻转:
reverse(vec.end(),vec.begin());
for(auto j : vec){
cout << j << "\n";
}
return 0;
}
测试2:
(4)清空vector:
#include<bits/stdc++.h>
using namespace std;
vector<int> vec[100];
int main()
{
/* 一维vector的清空方式
:vec.clear();
二维vector的清空方式 :把每一层都清空
for(int i=1;i<=n;i++)
vec[i].clear();
*/
return 0;
}
(5)删除指定元素:用指针删除:
#include<bits/stdc++.h>
using namespace std;
vector<int> vec;
int main()
{
int n;
cin >> n;
int x;
for(int i=0;i<n;i++)
{
cin >> x;
vec.push_back(x);
}
for(auto it=vec.begin();it!=vec.end();)
{
if(*it==4) it=vec.erase(it);
else it++;
//更新指针位置,否则会中断,无法输出任何内容.
}
for(auto j: vec)
{
cout << j << "\n";
}
return 0;
}
测试:
(6)删除vector的最后一个元素:
#include<bits/stdc++.h>
using namespace std;
vector<int> vec;
int main()
{
int n;
cin >> n;
int x;
for(int i=0;i<n;i++)
{
cin >> x;
vec.push_back(x);
}
vec.pop_back(); //删除容器末尾元素
for(auto j: vec)
{
cout << j << "\n";
}
return 0;
}
测试: