stl-vector
来源:互联网 发布:淘宝上的衣服能买吗 编辑:程序博客网 时间:2024/06/14 06:12
vector的基本操作
vector的长度根据需要自动改变。
vectore<typename> name;定义vector
vectore<typename> name(n,x);可以将vector初始化为n个x;
name.push_back();添加元素,时间复杂度O(1)
name.pop_back();删除元素;O(1)
name.size();获得元素个数;O(1)
name.clear();清空vector中的所有元素;
name.insert(it,x);向迭代器it处插入一个元素x;O(N)
neme.erase(it);删除迭代器为it的元素。O(N)
name.erase(it1,it2);删除两个迭代器内的元素。O(N)
注意:迭代器与指针不同,删除后此迭代器不在存在,一般无法对删除过得迭代器进行操作,可以这样it=neme.erase(it);删除it迭代器并指向下一个迭代器;但是有的编译器会因为vector是线型容器自动指向下一元素;建议使用it=neme.erase(it);操作;
name1.swap(name2);将name1和name2交换;
name1=name2;当name1和name2类型相同的话(例:都为int)可以直接赋值;
name1assign(it1,it2);name清空,然后将it1到it2迭代器中的元素拷贝给name(遇上面直接复制的区别在与可以拷贝不同类型的vector,列如把一个char拷贝给int类型,则相当于把int当做ascii码值赋给char)
2、vector的排序
vector可以用sort和reverse对迭代器进行排序和颠倒。
Vector存结构体的时候可以用sort自写函数排序。
使用sort从大到小排序时可以直接调用函数 sort(it1,it2,greater<typename>() );排序
3、vector元素的访问:
通过下标访问:
name[index],例如name[0],name[0],但若是访问到不存在的元素会乱出结果。
name.at(i);与上面一样,但若是访问到不存在元素会报错。
通过迭代器访问:
定义迭代器:vectore<typename>::iteratorit;
第一个元素的迭代器:it.begin();
最后一个元素后面一位的迭代器:it.end();
Vectore的迭代器可以进行it=it+i的操作;
4、反转向迭代器的定义和运用
vector<typename>::reverse_iteratorit;定义反向迭代器
name.rbegin();最后一个元素
name.rend();第一个元素前面的迭代器
可以用name.rbegin();代替name.end()-1;操作
具体应用如下:
#include<iostream>#include<vector>using namespace std;int main(){vector<int> s;vector<int>::reverse_iterator it1;vector<int>::iterator it;s.push_back(1);s.push_back(2);s.push_back(3);/*for(it=s.end()-1;it>=s.begin();it--)cout<<*it<<" ";cout<<endl;这种情况到达s.begin的时候it--在执行一次,程序有可能崩掉*/for(it1=s.rbegin();it1!=s.rend();it1++)cout<<*it1<<" ";cout<<endl;/*输出结果 3 2 1 */ }
- 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
- STL Vector
- STL vector
- stl vector
- stl-vector
- Java实现-子树
- 用MyBatis实现数据的增删改查
- UVa 10288(Coupons) 数学期望(概率+递推) Java
- 加载进度条
- jzoj 3518_进化序列_模拟
- stl-vector
- json总结
- order by实现数据排序
- 蒙层
- Android_广播大全
- LA 3644 X-Plosives [并查集]
- 四、基于Cortex-A8和ZigBee技术的智能家居监控系统的设计与实现
- 暑假写题第二天
- python简单的数据处理(文件)