作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
vector在c++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的和函数库。
#include <vector> using namespace std; vector<int> vec; vec.push_back(a); cout<<vec[0]<<endl; vector<int>::iterator it;//使用迭代器访问元素. for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl; vec.insert(vec.begin()+i,a);//在第i+1个元素前面插入a vec.erase(vec.begin()+2);//删除第3个元素
部分参考https://www.cnblogs.com/msymm/p/9006022.html 感谢!!
序列 | 动态数组 | allocator-aware
序列容器的元素按严格线性排列,可按顺序访问它们的位置;
动态数组允许直接访问其任何元素,可快速在序列首尾相对快速进行元素添加 / 删除;
容器通过 allocator 对象动态处理存储需求
除了写起来方便之外,时间复杂度很垃圾。。。
(public member function )
begin
将迭代器返回到开头(增长方向:begin -> end)
将迭代器返回到结尾
返回反向迭代器以反向开始(增长方向:rbegin -> rend)
将反向迭代器返回到反向结束
(c++11)
将const_iterator返回到开头(与begin类似,区别在于begin指向的值可以改变,cbegin指向的值不可改变)
(c++11)
将const_iterator返回到开头末尾
(c++11)
返回const_reverse_iterator以反向开始
(c++11)
将const_reverse_iterator返回到反向结束
参考https://blog.csdn.net/chnyac/article/details/82710050 感谢!!
是一个双向链表
multiset和set 可较快完成对一组数据的常规操作,包括:
multiset允许元素重复出现 set 保证元素唯一性,不允许元素重复
set操作:
#include<iostream> #include<set> //引入set库 using namespace std; int main() { set<int> s; //定义包含整数的set set<int>::iterator it; //定义迭代器 s.insert(8); //插入元素 s.insert(6); s.insert(6); s.insert(6); //循环输出所有元素 for(it=s.begin();it!=s.end();it++) cout<<*it<<endl; return 0; } #include<iostream> #include<set> //引入set库 using namespace std; int main() { set<int> s; //定义包含整数的set set<int>::iterator it; //定义迭代器 s.insert(6); s.insert(6); cout<<s.count(6)<<endl; //返回6的个数 cout<<s.count(7)<<endl; return 0; } #include<iostream> #include<set> using namespace std; int main() { set<int> s; s.insert(1); s.insert(2); s.insert(3); s.insert(3); cout<<s.size(); //求总数 return 0; } #include<iostream> #include<set> //引入set库 using namespace std; int main() { set<int> s; //定义包含整数的set set<int>::iterator it; //定义迭代器 s.insert(8); //插入元素 s.insert(6); s.erase(6); //删除元素 s.erase(6); for(it=s.begin();it!=s.end();it++) cout<<*it<<endl; return 0; } #include<iostream> #include<set> //引入set库 using namespace std; int main() { set<int> s; //定义包含整数的set set<int>::iterator it; //定义迭代器 s.insert(6); if(s.find(6)!=s.end())cout<<"found!"<<endl; else cout<<"not found!"<<endl; if(s.find(7)!=s.end())cout<<"found!"<<endl; else cout<<"not found!"<<endl; return 0; }
一个映射
操作有:
#include<iostream> #include<map> using namespace std; int main(){ map<char,int> d; map<char,int>::iterator it; // insert some values: d['a']=10; d['b']=20; d['c']=30; d['d']=40; d['e']=50; d['f']=60; it=d.find('b'); if(it!=d.end()) d.erase(it); // erasing by iterator d.erase('c'); // erasing by key d.erase('x'); // erasing by key // show content: for(it=d.begin(); it!=d.end(); ++it) cout<<it->first<<" "<<it->second<<endl; return 0; } #include<iostream> #include<map> using namespace std; int main (){ map<char,int> d; map<char,int>::iterator it; d['a']=50; d['b']=100; d['c']=150; d['d']=200; it=d.find('b'); if(it!=d.end()) d.erase(it); cout<<"a => "<<d.find('a')->second<<endl; cout<<"c => "<<d.find('c')->second<<endl; cout<<"d => "<<d.find('d')->second<<endl; return 0; } #include<iostream> #include<map> using namespace std; int main(){ map<char,int> d; d['a']=101; d['b']=202; d['c']=302; //cout<<d['x']<<endl; cout<<d.size()<<endl; return 0; } // accessing mapped values #include<iostream> #include<map> #include<string> int main(){ std::map<char,std::string> mymap; mymap['a']="an element"; mymap['b']="another element"; mymap['c']=mymap['b']; std::cout << "mymap['a'] is " << mymap['a'] << '\n'; std::cout << "mymap['b'] is " << mymap['b'] << '\n'; std::cout << "mymap['c'] is " << mymap['c'] << '\n'; std::cout << "mymap['d'] is " << mymap['d'] << '\n'; std::cout << "mymap now contains " << mymap.size() << " elements.\n"; return 0; } /* notice how the last access (to element 'd') inserts a new element in the map with that key and initialized to its default value (an empty string) even though it is accessed only to retrieve its value. member function map::find does not produce this effect. */ #include<iostream> #include<map> using namespace std; int main(){ map<char,int> d; map<char,int>::iterator it; d['b'] = 100; d['a'] = 200; d['c'] = 300; // show content: for(it=d.begin();it!=d.end();++it) cout<<it->first<<" "<<it->second<<endl; for(it=d.begin();it!=d.end();++it) cout<<(*it).first<<" "<<(*it).second<<endl; return 0; } #include<iostream> #include<map> #include<string> using namespace std; int main(){ map<char,string> d; d['a']="wawawa"; d['b']="hahaha"; d['c']=d['a']; d['b']="hohoho"; cout<<d['a']<<endl; cout<<d['b']<<endl; cout<<d['c']<<endl; cout<<d['x']<<endl; return 0; }
empty size swap
感谢大家阅读。。!
如对本文有疑问, 点击进行留言回复!!
SP8093 JZPGYZ - Sevenk Love Oimaster(广义SAM)
[2020牛客暑期多校训练营第三场] L.Problem L is the Only Lovely Problem 字符串函数
Qt——BUG:构造函数中new了控件并隐藏了,后续显示时位置不对?
PAT甲级 1087. All Roads Lead to Rome (30) (dijkstra)
网友评论