STL容器常用操作概括
发布时间:2021-11-12 12:27:47 所属栏目:教程 来源:互联网
导读:在C+11标准中引入了容器,其中包含: 顺序容器(顺序容器的元素排列次序与元素值无关,而是由元素添加到容器里的次序决定)有vector,list,deque。 关联容器(关联式容器是非线性的树结构)有map,set,multimap,multiset等。 容器适配器:stack,queue,priority_queue
在C+11标准中引入了容器,其中包含: 顺序容器(顺序容器的元素排列次序与元素值无关,而是由元素添加到容器里的次序决定)有vector,list,deque。 关联容器(关联式容器是非线性的树结构)有map,set,multimap,multiset等。 容器适配器:stack,queue,priority_queue。 顺序容器 1.vector 常用操作: vector<int> vec; int size = vec.size(); //获取元素大小 vec.empty();//判断是否为空 vec.push_back(100); //加入元素 vec.insert(vec.end(),5,3); //从vec末端插入5个3 vec.assign(vec2.begin(),vec2.begin()+2);//分配值 vec.front();//返回第一个元素的引用 vec.back(); //返回最后一个元素的引用 vec.rbegin();//返回第一个元素的前向指针 vec.pop_back(); //删除末尾的元素 vec.erase(const_iterator first, const_iterator last);//删除区间的元素 vec.erase(const_iterator position); //删除某个元素 vec.clear();//清空元素 2.list 常用操作: list<int> lst; lst.assign(lst2.begin(),lst2.end());//分配值 lst.push_back(10);//添加值 lst.empty();//判断为空 lst.erase(const_iterator first, const_iterator last);//删除区间元素 lst.erase(const_iterator postion);//删除某个元素 lst.remove(2);//删除所有的2 lst.unique();//删除相邻重复元素 lst.pop_back();//删除末尾值 lst.clear();//清空值 lst.front();//返回第一个元素的引用 lst.back(); //返回最后一个元素的引用 lst.rbegin();//返回第一个元素的前向指针 lst.insert(lst.begin(),5,2);//从指定位置插入5个值为3的元素 lst.reverse();//反转 lst.size();//含有元素个数 lst.sort();//排序 3.deque 常用操作: deque<int> deq; int size = deq.size(); //获取元素大小 deq.empty();//判断是否为空 deq.push_back(100); //末尾加入元素 dep.push_front(100) //容器首部加入元素 deq.insert(vec.end(),5,3); //从deq末端插入5个3 deq.assign(vec2.begin(),vec2.begin()+2);//分配值 deq.front();//返回第一个元素的引用 deq.back(); //返回最后一个元素的引用 deq.rbegin();//返回第一个元素的前向指针 deq.pop_back(); //删除末尾的元素 deq.pop_front(); //删除头部的元素 deq.erase(const_iterator first, const_iterator last);//删除区间的元素 deq.erase(const_iterator position); //删除某个元素 deq.clear();//清空元素 关联容器 1.set 常用操作: set<int> st; st.begin();//返回set容器的第一个元素 st.end();//返回set容器的最后一个元素 st.clear();//删除set容器中的所有的元素 st.empty();//判断set容器是否为空 st.max_size();//返回set容器可能包含的元素最大个数 st.size();//返回当前set容器中的元素个数 st.rbegin();//返回的值和end()相同 st.rend();//返回的值和rbegin()相同 st.count(k);//返回出现的次数,只可能为0或者1 //删除操作(set中的删除操作是不进行任何的错误检查的) st.erase(p);//删除迭代器p指向的值 st.erase(pb,pw);//删除迭代器pb,pe之间的值 st.erase(k);//删除k的值 st.find(k);//返回该值的迭代器,如果迭代器不为st.end(),则找到该值 st.count(k);//返回k的出现次数 2.map 常用操作: map<k, v> m;//建立键值类型为k,v的map //插入操作 m.insert(make_pair(k,v));//e是value_type类型 m.insert(beg, end);//beg,end迭代器开始与结束 m.insert(iter, e); //查找元素 m.count(k);//返回该元素的次数 m.find(k);//返回指向该元素的迭代器 //删除操作 m.erase(k);//删除键为k的元素,返回删除元素的个数 m.erase(p);//删除迭代器p指向的元素,返回void m.erase(pb, pe);//删除迭代器pb到迭代器pe范围内的元素,返回void //遍历操作 //第一种方式 map<k, v>::iterator iter; for(iter=m.begin();iter!=m.end();iter++) { cout << iter->first <<endl; //获取键 cout << iter->second <<endl; //获取值 } //第二种方式 int nSize = m.size();//返回map大小 for(int i=1; i<= nSize; i++) { cout << m[i] <<endl; } 3.multimap 常用操作: 与map基本雷同 与map的区别:multimap允许重复元素的存在,而map不允许重复元素的存在 4.multiset 常用操作: 与set基本雷同 与set区别: multiset允许重复元素的存在,而set不允许重复元素的出现 容器适配器 1.stack 常用操作: stack<int> s; s.push(2);//压入元素 s.pop(); //弹出元素 s.empty(); //判断是否为空 s.size(); //栈的大小 s.top() // 首元素 2.queue 常用操作: queue<int> q; q.push(2); //压入元素 q.pop();//弹出队头元素 q.front();//返回队头元素 q.back();//返回队尾元素 q.size();//队列大小 q.empty();//判断是否为空 1234567 3.priority_queue 常用操作: priority_queue<int> pq; pq.push(2);//压入元素 pq.pop(); //弹出元素 pq.empty(); //判断是否为空 pq.size(); //优先队列的大小 pq.top() // 首元素 (编辑:东莞站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |