1.容器
常用数据结构有数组(array),链表(list),tree(树),栈(stack),队列(queue),集合(set),映射表(map),
根据他们排列特性的不同,容器又分为序列式容器和关联式容器,
序列式容器:
序列容器是按照线性顺序存储元素的容器,常用的有vector,deque,list等
在调用vector,deque,list时别忘记包含它们的头文件
vector:
定义:vector<typename> name; 这相当于是一个一维数组,这里typename可以是任意的数据类型。vector<typename> Arrayname[size]; 这是一个二维数组,Arrayname[ ]中的每一个元素都是一个vector,eg:vector<int>Array[100].
初始化:
vextor<int> v{1,2,3};//直接花括号赋值
vector常用函数:
push_back():在vector容器v后添加一个元素x
vector<int> v;
for(int i = 1; i <= 3; i++){
v.push_back(i);
}
pop_back():删除尾元素
size():用于获取个数。
clear():用于清空容器中所有元素。
insert():insert(位置(x),插入元素(i)),在位置插入i元素。
(既然insert是插入函数,那么是否可以将一个容器的首元素插入到另一个容器尾元素的后面,使两个容器合并为一个容器)
vector<int> v, v1, v2;
v.insert(v.end(), v1.begin(), v1.end()); //v1插入到了v后
v.insert(v.end(), v2.begin(), v2.end());//当v1插入到了v后,变成了一个整体的v,又在v后插入v2
erase():删除单个元素或删除一个区间内所有元素。
删除单个元素:erase(a)删除a处的元素。
v.erase(v.begin() + 2)//意思为删除3处的元素.
删除一个区间内元素:erase(first,last)。
删除容器内元素:erase(v.first,v.end)。
deque:
deque是双端数组,可以对两端进行插入和删除操作,这就是它与vector的不同之处,vector是单向开口。由于它是双向的,随时可以添加一段新的空间,所以deque没有容量的概念。
deque<int> d1;
for (int i = 1; i < 6; i++)
{
d1.push_back(i);
}
从代码中可以发现赋值操作与vector相同。
deque.empty(); //判断容器是否为空
deque.size(); //返回容器中元素的个数
push_back(elem); //在容器尾部添加一个数据
push_front(elem); //在容器头部插入一个数据
pop_back(); //删除容器最后一个数据
pop_front(); //删除容器第一个数据
insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。
insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。
insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值。
clear(); //清空容器的所有数据
erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。
erase(pos); //删除pos位置的数据,返回下一个数据的位置。
front(); //返回容器中第一个数据元素
back(); //返回容器中最后一个数据元素
list
list是一个双向带头循环链表,允许在常数范围内的任意位置进行插入和删除,然而缺陷也和链表一样,不支持访问下标。
list大小:
cout << l1.empty() << endl;
cout << l3.size() << endl;
list的 头尾插删、insert、erase与deque一样
交换:
l.swap();
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_74380601/article/details/140804955