C++ STL容器详解之vector
来源:互联网 发布:xd mac 破解版 编辑:程序博客网 时间:2024/06/06 21:40
vector称为向量,其实它就是一个不定长数组。它属于序列式容器。而其他的序列式容器有deque , list , queue , priority_queue , stack 。接下来我会详解它们的。
vector可以实现数据结构中的队列、数组和堆栈的所有功能,是不是很6!
-vector的对象定义:
vector< T > v;
vector中的元素可以是任意型别T,比如int,double,string等等
vector<int> v; vector<string> v;
-vector的对象初始化:
vector类对象实现初始化操作可以使用push_back()。
vector<int> v;v.push_back(1);v.push_back(2);
vector的对象可以使用reserve()函数预先设置容器的大小
v.reserve(2);
-容器的大小和容量:
size()和capacity()用来统计容器中元素的数量
size()返回容器中现有的元素数量;capaticy()返回容器中实际能够容纳的元素数量。resize()可以修改容器的大小
vector<int> v;v.push_back(1);v.push_back(2);int s = v.size();int c = v.capacity();cout<<s<<endl;//输出为2cout<<c<<endl;//输出为2v.resize(8);int s1 = v.size();cout<<s1<<endl;//输出为8
vector成员函数和高级编程:
-1.判断向量是否为空
empty()
vector<int> v; if(v.empty()) printf("is_empty\n"); else printf("is_not_empty"); v.push_back(1); if(v.empty()) printf("is_empty\n"); else printf("is_not_empty");
-2.遍历向量元素:
两种方法:1.迭代器 2.类似数组遍历的方式,用循环
vector<int>::iterator it; for(it = v.begin();it!=v.end();it++) cout<<*it<<endl; ---------------------------------- for(int i =0;i<v.size();i++) cout<<v[i]<<endl;
-3.元素访问方法:
有at(index) , [index] , front()(返回第一个元素) , back()(返回最后一个元素)
vector<int> v; v.push_back(1); v.push_back(2); cout<<v.at(0)<<endl;输出1 cout<<v[0]<<endl;输出1 cout<<v.front()<<endl;输出1 cout<<v.back()<<endl;输出2
-4.迭代器相关函数:
begin() , end() ; 从第一个到最后一个
rbegin() , rend() ;从最后一个到第一个(逆向)
-5.元素查找和搜索:
find()函数
vector<int> v; v.push_back(2); vector<int>::iterator it = find(v.begin(),v.end(),2); if(it==v.end()) cout<<"no"<<endl; else cout<<"yes"<<endl;
-6.元素排序
sort()函数,注意别忘了头文件< algorithm >
默认排序(升序):
vector<int> v; v.push_back(5);v.push_back(4); v.push_back(6); sort(v.begin(),v.end());
也可以自己重写排序
bool cmp(const int& a,const int& b){ return a>b; } sort(v.begin(),v.end(),cmp);//实现降序排列
-7.插入元素
push_back()可以,还可以使用insert()将对象插入至vector中任意位置,返回值为迭代器。
vector<int> v; v.push_back(1); v.push_back(2); for_each(v.begin(),v.end(),print);//输出1 2 cout<<endl; v.insert(v.begin(),-1); for_each(v.begin(),v.end(),print);//输出-1 1 2
-8.删除元素
pop_back():删除最后一个元素
erase():删除由迭代器指定的元素,也可删除区间范围的元素
clear():删除所有元素
void print(int &e) { cout<<e<<" "; } ------------------------------------- vector<int> v; v.push_back(1); v.push_back(2); for_each(v.begin(),v.end(),print);//输出1 2 3 v.pop_back();//删除最后一个元素3 for_each(v.begin(),v.end(),print);//输出1 2 v.erase(v.begin());//删除第一个元素1 for_each(v.begin(),v.end(),print);//输出2 v.clear();//清空 for_each(v.begin(),v.end(),print);//什么也不输出
差不多了,关键的操作就整理到这里。
- STL之vector容器详解
- STL之vector容器详解
- STL之vector容器详解
- STL之vector容器详解
- STL之vector容器详解
- STL之vector容器详解
- STL之vector容器详解
- STL之vector容器详解
- STL之vector容器详解
- STL之vector容器详解
- STL之vector容器详解
- STL之vector容器详解
- STL之Vector容器详解
- STL之vector容器详解
- C++STL之vector容器
- [容器]STL之vector容器详解
- STL之二:vector容器用法详解
- STL之vector容器用法详解
- Eclipse插件安装4种方法
- 在编辑框控件中多行显示文本信息
- 数据库实践一:Sql基本操作
- Hibernate报错org.hibernate.MappingException: Unknown entity解决方法
- Python学习(2)——字符串与数字转化
- C++ STL容器详解之vector
- Oracle(8)数据类型及dump()
- 我的PAT BASIC 刷题记录1001
- 记录一次TIJ中提出的对象引用计数法
- 【Dubbo】微服务架构(二): 如何把应用分解成多个服务
- POJ 1155 TELE 树形DP(背包)
- VirtualBox内Linux系统怎样与Windows共享文件
- 如何将数据变成产品?
- 统计数组中差最小(或最大)的组合可能个数