(一)vector容器
(1)vector容器的构造、插入与访问
默认构造vector <T> v;创建一个空的动态数组,不包含任何元素
vector容器元素访问方式——下标访问和迭代器访问
1.下标访问 vector支持下标访问,像普通数组一样,可以使用vectorname[index]的形式来访问或修改元素,访问下标从0开始,直到vectorname.size() - 1
示例:对于vector<int> v,可以直接访问v[0]、v[1]等
2.迭代器访问 迭代器是一种类似于指针的对象,提供了对vector容器中元素的安全访问
定义迭代器的语法:vector<typename>::iterator it; 使用迭代器可以遍历vector中的所有元素,进行读取、修改等操作
示例:vector<int>::iterator it = v.begin();,这会将it指向v的第一个元素
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
for(auto x:v)
{
cout<<x<<" ";
}
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
for(int i=0;i<v.size();i++)
{
cout<<v[i]<<" ";
}
return 0;
}
(2)vector的移除
pop_back()
方法,用于移除动态数组的最后一个元素
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
v.pop_back();//pop删除弹出最后一个元素
for(int i=0;i<v.size();i++)
{
cout<<v[i]<<" ";
}
return 0;
}
(3)vector的赋值
指定大小的构造vector<T> v(size_type count);创建一个包含 count
个默认初始化元素的动态数组
size_type
一个类型定义(typedef),用于表示容器的大小或索引,通常是一个无符号整数类型,用于确保容器的大小和索引操作不会出现负值,从而避免潜在的错误
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v(7);
for(int i=0;i<v.size();i++)
{
v[i]=i;
cout<<v[i]<<" ";
}
return 0;
}
(4)vector的resize
resize
方法用于动态调整容器的大小,同时根据需要添加或删除元素
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v(7);
v.resize(10);
for(int i=0;i<v.size();i++)
{
v[i]=i;
cout<<v[i]<<" ";
}
return 0;
}
(5)迭代器
迭代器提供了一种统一的方式来访问容器中的元素
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
vector<int>::iterator it;
it=v.begin();
for(auto x:v)
{
cout<<*it<<" ";
*it++;
}
return 0;
}
(6)vector的clear
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
cout << "原来的vector容器内容 ";
for (auto x : v) {//auto
关键字用于自动类型推断,允许编译器根据初始化表达式来推断变量的类型
cout << x<< " ";
}
cout << endl;
v.clear();
std::cout << "清空后vector容器的内容 ";
if (v.empty()) {
cout << "Empty" << endl;
}
else {
for (int x : v)
{
cout << x << " ";
}
cout << endl;
}
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
auto it = v.begin() + 2;
/*auto 关键字声明了一个迭代器变量 it
将其初始化为指向 vector v 中第三个元素的位置
*/
v .erase(it);
for (int x : v) {
cout << x << " ";
}
cout << endl;
return 0;
}
push_back(element):向vector的末尾添加一个新元素
pop_back():删除vector中的最后一个元素
size():返回vector中元素的个数
clear():删除vector中的所有元素,使其变为空
erase(it):删除指定迭代器位置的元素
(二)set容器
set为C++标准模板库(STL)中的一种有序容器 自动去重:set容器内部确保所有元素都是唯一的,自动去除重复的元素 自动排序:set容器中的元素会按照一定的顺序排列,默认情况下是升序排列
注意:set只支持迭代器访问
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> s;
s.insert(2);
s.insert(4);
s.insert(6);
s.insert(8);
s.insert(10);
set<int>::iterator it;
for(it=s.begin();it!=s.end();it++)
{
cout<<*it<<" ";
}
return 0;
}
语法类似vector
insert(element):将一个新元素插入到set中
find(element):在set中查找一个元素
erase(element):删除set中指定的元素
size():返回set中元素的个数
clear():删除set中的所有元素