【原创】C++STL multiset
资料来源:官方文档
multiset是一个按照特定排序储存元素的容器,多个元素可以有相同的值。元素的值即为其本身的键值。multiset中的值无法修改,可插入删除。常用于实现二叉树。
定义一个multiset:
// constructing multisets
#include <iostream>
#include <set>
using namespace std;
bool fncomp (int lhs, int rhs) {return lhs<rhs;} struct classcomp {
bool operator() (const int& lhs, const int& rhs) const
{return lhs<rhs;}
}; int main ()
{
multiset<int> first; //基本定义 int myints[]= {,,,,};
multiset<int> second (myints,myints+); // pointers used as iterators multiset<int> third (second); // 复制 multiset<int> fourth (second.begin(), second.end()); // iterator ctor. multiset<int,classcomp> fifth; // class as Compare bool(*fn_pt)(int,int) = fncomp;
multiset<int,bool(*)(int,int)> sixth (fn_pt); // function pointer as Compare return ;
}
容器间赋值:
// assignment operator with multisets
#include <iostream>
#include <set> int main ()
{
int myints[]={ ,,,, };
std::multiset<int> first (myints,myints+); // multiset with 5 ints
std::multiset<int> second; // empty multiset second=first; // now second contains the 5 ints
first=std::multiset<int>(); // 清空first std::cout << "Size of first: " << first.size() << '\n';
std::cout << "Size of second: " << second.size() << '\n';
return ;
}
输出为:
Size of first:
Size of second:
遍历容器:
int main ()
{
int myints[] = {,,,,};
multiset<int> mymultiset (myints,myints+); multiset<int>::iterator it;//定义一个在multiset上的iterator cout << "mymultiset contains:";
for (multiset<int>::iterator it=mymultiset.begin(); it!=mymultiset.end(); ++it)
cout << ' ' << *it; cout << '\n'; return ;
}
输出:
mymultiset contains:
插入操作:
int main ()
{
multiset<int> mymultiset;
multiset<int>::iterator it; // set some initial values:
for (int i=; i<=; i++) mymultiset.insert(i*); // 10 20 30 40 50 it=mymultiset.insert(); it=mymultiset.insert (it,); // max efficiency inserting
it=mymultiset.insert (it,); // max efficiency inserting
it=mymultiset.insert (it,); // no max efficiency inserting (24<29) int myints[]= {,,};
mymultiset.insert (myints,myints+); cout << "mymultiset contains:";
for (it=mymultiset.begin(); it!=mymultiset.end(); ++it)
cout << ' ' << *it;
cout << '\n'; return ;
}
输出:
myset contains:
删除某个特定元素:
int main ()
{
std::multiset<int> mymultiset;
std::multiset<int>::iterator it; // insert some values:
mymultiset.insert (); //
for (int i=; i<; i++) mymultiset.insert(i*); // 10 20 30 40 40 50 60 it=mymultiset.begin();
it++; // ^ mymultiset.erase (it); // 10 30 40 40 50 60 mymultiset.erase (); // 10 30 50 60 it=mymultiset.find ();
mymultiset.erase ( it, mymultiset.end() ); // 10 30 cout << "mymultiset contains:";
for (it=mymultiset.begin(); it!=mymultiset.end(); ++it)
cout << ' ' << *it;
cout << '\n'; return ;
}
清空容器:
multiset<int> list;
list.clear();
【原创】C++STL multiset的更多相关文章
- 详解C++ STL multiset 容器
详解C++ STL multiset 容器 本篇随笔简单介绍一下\(C++STL\)中\(multiset\)容器的使用方法及常见使用技巧. multiset容器的概念和性质 \(set\)在英文中的 ...
- Honk's pool[STL multiset]
目录 题目地址 题干 代码和解释 题目地址 Honk's pool(The Preliminary Contest for ICPC Asia Shenyang 2019 ) 题干 代码和解释 本题使 ...
- luogu1081 [NOIp2012]开车旅行 (STL::multiset+倍增)
先用不管什么方法求出来从每个点出发,A走到哪.B走到哪(我写了一个很沙雕的STL) 然后把每个点拆成两个点,分别表示A从这里出发和B从这里出发,然后连边是要A连到B.B连到A.边长就是这次走的路径长度 ...
- STL(multiset) UVA 11020 Efficient Solutions
题目传送门 题意:训练指南P228 分析:照着书上的做法,把点插入后把它后面不占优势的点删除,S.size ()就是优势的人数,时间复杂度O (nlogn) #include <bits/std ...
- (原创滴~)STL源码剖析读书总结1——GP和内存管理
读完侯捷先生的<STL源码剖析>,感觉真如他本人所说的"庖丁解牛,恢恢乎游刃有余",STL底层的实现一览无余,给人一种自己的C++水平又提升了一个level的幻觉,呵呵 ...
- HDU 4022 stl multiset
orz kss太腻害了. 一.set和multiset基础 set和multiset会根据特定的排序准则,自动将元素进行排序.不同的是后者允许元素重复而前者不允许. 需要包含头文件: #include ...
- POJ 3253 Fence Repair C++ STL multiset 可解 (同51nod 1117 聪明的木匠)
Fence Repair Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 53106 Accepted: 17508 De ...
- C++ STL multiset
multiset的例子,允许集合内的元素是重复的 #include <iostream> #include <set> using namespace std; int mai ...
- STL非变易算法 - STL算法
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1394600460.html 原创:ST ...
随机推荐
- LeetCode 743. Network Delay Time
原题链接在这里:https://leetcode.com/problems/network-delay-time/ 题目: There are N network nodes, labelled 1 ...
- cjss 像编写css 一样开发web应用
cjss 提供了使用类似css 的方式编写web 应用 cjss 包含的阶段 data prepare body element 几点说明 并不是所以阶段必须使用,但是每个级别只能存在一个script ...
- python实现:判断某一天是那一年中的第几天
方法1:先判断是否是闰年,然后再利用求和,得出某一天是第几天 # 方法1:low版 def func1(year, month, day): # 分别创建平年,闰年的月份天数列表(注意列表下标从0开始 ...
- lower_bound( )和upper_bound( )怎么用嘞↓↓↓
lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begin,end,num):从数 ...
- 照片放大功能h5
这里就不放图了,放大的是别人的身份证 <template> <div class="image-cell__wrapper" :style="borde ...
- spring boot +dubbo+zookeeper
dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 结合本公司的开发也是用的dubbo这款优秀的框架,加上 最近工作重心的.所以对于dubbo的 ...
- 解决:E: Could not get lock /var/lib/dpkg/lock
问题: ubuntu16 执行 sudo apt install aria2 命令时,提示如下错误 E: Could not get lock /var/lib/dpkg/lock - open (1 ...
- 第06组 Alpha冲刺(3/4)
队名:福大帮 组长博客链接:https://www.cnblogs.com/mhq-mhq/p/11899921.html 作业博客 :https://edu.cnblogs.com/campus/f ...
- .Net Core EF 使用整理合集
1..NetCore中EFCore的使用整理 2..NetCore中EFCore的使用整理(二)-关联表查询 3.EF Core 1.0 和 SQLServer 2008 分页的问题 4.EF Cor ...
- python pycharm错误集锦
url:http://www.cnblogs.com/hinimix/p/8016859.html 1, this list creation could be rewritten as a list ...