资料来源:官方文档

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的更多相关文章

  1. 详解C++ STL multiset 容器

    详解C++ STL multiset 容器 本篇随笔简单介绍一下\(C++STL\)中\(multiset\)容器的使用方法及常见使用技巧. multiset容器的概念和性质 \(set\)在英文中的 ...

  2. Honk's pool[STL multiset]

    目录 题目地址 题干 代码和解释 题目地址 Honk's pool(The Preliminary Contest for ICPC Asia Shenyang 2019 ) 题干 代码和解释 本题使 ...

  3. luogu1081 [NOIp2012]开车旅行 (STL::multiset+倍增)

    先用不管什么方法求出来从每个点出发,A走到哪.B走到哪(我写了一个很沙雕的STL) 然后把每个点拆成两个点,分别表示A从这里出发和B从这里出发,然后连边是要A连到B.B连到A.边长就是这次走的路径长度 ...

  4. STL(multiset) UVA 11020 Efficient Solutions

    题目传送门 题意:训练指南P228 分析:照着书上的做法,把点插入后把它后面不占优势的点删除,S.size ()就是优势的人数,时间复杂度O (nlogn) #include <bits/std ...

  5. (原创滴~)STL源码剖析读书总结1——GP和内存管理

    读完侯捷先生的<STL源码剖析>,感觉真如他本人所说的"庖丁解牛,恢恢乎游刃有余",STL底层的实现一览无余,给人一种自己的C++水平又提升了一个level的幻觉,呵呵 ...

  6. HDU 4022 stl multiset

    orz kss太腻害了. 一.set和multiset基础 set和multiset会根据特定的排序准则,自动将元素进行排序.不同的是后者允许元素重复而前者不允许. 需要包含头文件: #include ...

  7. POJ 3253 Fence Repair C++ STL multiset 可解 (同51nod 1117 聪明的木匠)

    Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 53106   Accepted: 17508 De ...

  8. C++ STL multiset

    multiset的例子,允许集合内的元素是重复的 #include <iostream> #include <set> using namespace std; int mai ...

  9. STL非变易算法 - STL算法

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1394600460.html 原创:ST ...

随机推荐

  1. js添加触摸时间,禁止页面缩放

    <meta name="viewport" content="target-densitydpi=320,width=640,user-scalable=no&qu ...

  2. 应用安全测试技术DAST、SAST、IAST对比分析【转】

    转自:https://blog.csdn.net/qq_29277155/article/details/92411079 一.全球面临软件安全危机 2010年,大型社交网站rockyou.com被曝 ...

  3. 洛谷 P3605 [USACO17JAN]Promotion Counting晋升者计数

    题目描述 The cows have once again tried to form a startup company, failing to remember from past experie ...

  4. a list of frequently asked questions about Circus

    转自:https://circus.readthedocs.io/en/latest/faq/,可以帮助我们了解circus 的使用,以及问题解决 How does Circus stack comp ...

  5. android 自己制作Jar包 和 修改 现成的 Jar包文件

    先看如何创建自己的 Jar 包 里面随便写个方法 public int add(int a,int b){ return (a+b); } task makeJar(type: Copy) { del ...

  6. python 报can't subtract offset-naive and offset-aware datetimes错误

    两个时间一个含时区,一个不含时区

  7. A simple dispiction of dijkstra

    前言 \(SPFA\)算法由于它上限 \(O(NM) = O(VE)\)的时间复杂度,被卡掉的几率很大.在算法竞赛中,我们需要一个更稳定的算法:\(dijkstra\). 什么是\(dijkstra\ ...

  8. 【cf contest 1119 G】Get Ready for the Battle

    题目 你有\(n\)个士兵,需要将他们分成\(m\)组,每组可以为0: 现在这些士兵要去攻打\(m\)个敌人,每个敌人的生命值为\(hp_i\) : 一轮游戏中一组士兵选定一个攻打的敌人,敌人生命值- ...

  9. string拼接时去掉最后一个逗号

     str.replace(str.length() - 1, str.length(), "");

  10. 升级pip3的正确姿势--python3 pip3 update

    升级pip3的正确姿势为: pip3 install --upgrade pip 而不是 pip3 install --upgrade pip3