标签:style 效率 set 算法 修改 访问 反转 的区别 增加
1. 头文件
#include<vector>
2. vector声明及初始化
vector<int> vec; //声明一个int型向量 vector<int> vec(5); //声明一个初始大小为5的int向量 vector<int> vec(10, 1); //声明一个初始大小为10且值都是1的向量 vector<int> vec(tmp); //声明并用tmp向量初始化vec向量 vector<int> tmp(vec.begin(), vec.begin() + 3); //用向量vec的第0个到第2个值初始化tmp int arr[5] = {1, 2, 3, 4, 5}; vector<int> vec(arr, arr + 5); //将arr数组的元素用于初始化vec向量 //说明:当然不包括arr[4]元素,末尾指针都是指结束元素的下一个元素, //这个主要是为了和vec.end()指针统一。 vector<int> vec(&arr[1], &arr[4]); //将arr[1]~arr[4]范围内的元素作为vec的初始值
3. vector基本操作
(1). 容量
(2). 修改
(3)迭代器
(4)元素的访问
(4)算法
vector<int>::iterator it; for (it = vec.begin(); it != vec.end(); it++) cout << *it << endl; //或者 for (size_t i = 0; i < vec.size(); i++) { cout << vec.at(i) << endl; }
#include <algorithm>
reverse(vec.begin(), vec.end());
#include <algorithm> sort(vec.begin(), vec.end()); //采用的是从小到大的排序 //如果想从大到小排序,可以采用上面反转函数,也可以采用下面方法: bool Comp(const int& a, const int& b) { return a > b; } sort(vec.begin(), vec.end(), Comp);
4. vector与set基本操作示例
#include<iostream> #include<set> #include<vector> using namespace std; int main() { cout<<"vector测试开始"<<endl; vector<int> a; a.push_back(1); a.push_back(2); cout<<"利用下标索引取值a[0]:"<<a[0]<<endl; a.insert(a.begin(),3);//在向量起始位置增加新元素。vector中用insert插入时,须提供插入的位置 a.insert(a.end(),3);//在向量末尾追加新元素。 cout<<"利用at函数取值a.at(1):"<<a.at(1)<<endl; cout<<"使用begin()函数取向量的第一个值:"<<*a.begin()<<endl; cout<<endl; cout<<"set集测试开始"<<endl; set<int> s; //set没有push_back()/pop_back(),也不能用s[i],at(i)取值 set<int> s1; s.insert(1); s.insert(2); s1.insert(3); s1.insert(4); s1.insert(2); cout<<"取s集合的第一个元素:"<<*s.begin()<<endl; cout<<"取s集合逆序的第一个元素:"<<*s.rbegin()<<endl; cout<<"取s集合逆序的最后一个元素:"<<*s.rend()<<endl; cout<<"找s集合中的0元素:"<<*s.find(0)<<endl;//找到元素,则返回元素位置,找不到元素返回最后一个元素的位置 cout<<"取s集合顺序的最后一个元素:"<<*s.end()<<endl; cout<<"集合交换前s1集合:"; set<int>::iterator it=s1.begin(); for(;it!=s1.end();it++) { cout<<*it<<" "; } cout<<endl; s1.swap(s); cout<<"两个集合交换后:"; set<int>::iterator it1 = s1.begin(); for(;it1!=s1.end();it1++) { cout<<*it1<<" "; } cout<<endl; s.insert(s1.begin(),s1.end()); cout<<"两个集合合并后:"; set<int>::iterator it2 = s.begin(); for(;it2!=s.end();it2++) cout<<*it2<<" "; cout<<endl; return 0; } 输出结果: vector测试开始 利用下标索引取值a[0]:1 利用at函数取值a.at(1):1 使用begin()函数取向量的第一个值:3 set集测试开始 取s集合的第一个元素:1 取s集合逆序的第一个元素:2 取s集合逆序的最后一个元素:1 找s集合中的0元素:2 取s集合顺序的最后一个元素:2 集合交换前s1集合:2 3 4 两个集合交换后:1 2 两个集合合并后:1 2 3 4
标签:style 效率 set 算法 修改 访问 反转 的区别 增加
原文地址:https://www.cnblogs.com/LXJ-YZ/p/13166590.html