赞
踩
insert():在指定位置插入一个或多个元素 |
erase():删除指定位置或指定范围的元素 |
push_back():将元素添加到容器的末尾 |
pop_back():删除容器的最后一个元素 |
push_front():将元素添加到容器的开头 |
pop_front():删除容器的第一个元素 |
resize():改变容器的大小 |
capacity():输出的是Vector数组内部存储空间的容量大小 |
注:1、动态数组Vector没有提供头部增删(push_front()、pop_front())功能(和数组一样,删除除尾部索引的需要修改后面元素的索引值,很繁琐),链表list有。
2、resize():改变容器的大小(能容纳的元素个数)。
代码示例:通过上述函数,实现动态数组vector的增删改查。
- #include <vector>
- #include <list>
- #include <iostream>
- #include <string>
- using namespace std;
-
- int main()
- {
- vector<int>vec = {1,2,3,4,5};
- list<int>lst = {1,2,3,4,5};
-
- auto it = vec.begin();
- vec.insert(it + 2,10);//在第三个位置插入元素10,迭代器加法操作只适用于vector容器操作
-
- it = vec.begin();
- vec.erase(it + 1);//删除第二个元素
-
- // 使用push_back()和pop_back()函数在容器尾部添加和删除元素
- vec.pop_back();//删除末尾元素
- vec.push_back(6);//添加末尾元素6
-
- // for(it = vec.begin();it != vec.end();it++)
- // {
- // if(it != vec.end()-1)
- // cout<<*it<<",";
- // else
- // cout<<*it;
- // }
- for(auto i:vec)//foreach遍历
- {
- cout<<i<<",";
- }
- cout<<endl;
-
- cout<<"vec动态数组的容器中元素个数是:"<<vec.capacity()<<endl;
- vec.resize(20);
- cout<<"修改容器大小后的容器元素个数:"<<vec.capacity()<<endl;
- // cout<<"容器vec所占内存空间大小为:"<<sizeof(vec)<<"字节"<<endl;
-
- // 使用push_front()和pop_front()函数在容器头部添加和删除元素
- lst.pop_front();
- lst.push_front(10);
- cout<<"lst中的元素有:";
- for(auto i = lst.begin();i != lst.end();i++)
- {
- if(i != lst.end()--)
- cout<<*i<<",";
- else
- cout<<*i;
- }
- return 0;
- }
运行结果:
- 1,10,3,4,6,
- vec动态数组的容器中元素个数是:10
- 修改容器大小后的容器元素个数:20
- 容器vec所占内存空间大小为:24字节
- lst中的元素有:10,2,3,4,5,
sort():对容器中的元素进行排序 (不适用于list) |
reverse():将容器中的元素反转 |
unique():去除容器中相邻的重复元素 |
count():计算容器中指定元素的数量 |
find():在容器中查找指定元素,并返回其位置的迭代器 |
remove():从容器中删除指定元素(将要删除元素移到末尾) |
注:unique()、remove()函数操作方式,vector和list,不同,list(链表)可以直接使用,而vector需要配合erase()删除操作才能使用。
vector代码示例:
- vec.erase(unique(vec.begin(),vec.end()),vec.end());
- //将相邻并相等的元素,取其一,移动到数组的后面
- //返回移动到数组末尾的第一个元素的迭代器
- //最后将移动到数组末尾的元素进行删除。
-
- vec.erase(remove(vec.begin(),vec.end(),4),vec.end());
- //将要移除的元素(4),移动到数组的后面
- //返回移动到数组末尾的第一个元素的迭代器
- //最后将移动到数组末尾的元素进行删除。
list代码示例:
- lst.unique();
- lst.remove(4);
代码示例:
- #include <iostream>
- #include <vector>
- #include <list>
- #include <algorithm>
- using namespace std;
-
- int main()
- {
- vector<int>vec = {5,3,3,1,4,2};
- list<int>lst = {5,3,3,1,4,2};
- sort(vec.begin(),vec.end());
- for(auto it = vec.begin();it != vec.end();it++)
- {
- if(it != vec.end()-1)
- cout<<*it<<",";
- else
- cout<<*it;
- }
- cout<<endl;
- reverse(vec.begin(),vec.end());
- cout<<"---------------"<<endl;
- for(auto it = vec.begin();it != vec.end();it++)
- {
- if(it != vec.end()-1)
- cout<<*it<<",";
- else
- cout<<*it;
- }
- cout<<endl;
- vec.erase(unique(vec.begin(),vec.end()),vec.end());
- cout<<"---------------"<<endl;
- for(auto it = vec.begin();it != vec.end();it++)
- {
- if(it != vec.end()-1)
- cout<<*it<<",";
- else
- cout<<*it;
- }
- cout<<endl;
- vec.erase(remove(vec.begin(),vec.end(),4),vec.end());
- cout<<"---------------"<<endl;
- for(auto it = vec.begin();it != vec.end();it++)
- {
- if(it != vec.end()-1)
- cout<<*it<<",";
- else
- cout<<*it;
- }
- cout<<endl;
-
- lst.sort();
- lst.unique();
- lst.remove(4);
- cout<<"---------------"<<endl;
- auto i = lst.begin();
- advance(i,lst.size()-1);
- for(auto it = lst.begin();it != lst.end();it++)
- {
- if(it != i)
- cout<<*it<<",";
- else
- cout<<*it;
- }
- cout<<endl;
-
- return 0;
- }
运行结果:
- 1,2,3,3,4,5
- ---------------
- 5,4,3,3,2,1
- ---------------
- 5,4,3,2,1
- ---------------
- 5,3,2,1
- ---------------
- 1,2,3,5
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。