标签: unordered-multiset

std :: unordered_multiset插入的复杂度

为什么最差情况下std::unordered_multiset插入件的复杂度是线性的?我知道为什么会这样std::unordered_set(您必须检查插入的值不在集合中),但是对于多集我却不明白。我是否缺少明显的东西?

c++ stl time-complexity c++11 unordered-multiset

5
推荐指数
1
解决办法
1089
查看次数

STL无序容器的本地迭代器有哪些用途?

在C ++标准表91的第23.2.7节中,无序关联容器[unord.req]描述了STL无序关联容器必须满足的其他要求。在该表中的标准决定了STL无序容器(即,,,和)必须提供作为成员类型和。unordered_setunordered_mapunordered_multisetunordered_multimaplocal_iteratorconst_local_iterator

在此处输入图片说明

  • local_iterator 是一个迭代器类型,其类别,值,差,指针和引用类型与无序容器的相同iterator。该迭代器可用于遍历单个存储桶,但不能跨存储桶进行迭代。
  • const_local_iterator是一个迭代器类型,其类别,值,差,指针和引用类型与无序容器的相同const_iterator。该迭代器可用于遍历单个存储桶,但不能跨存储桶进行迭代。

这些迭代器有什么用?

c++ unordered-map unordered-set unordered-multiset unordered-multimap

5
推荐指数
1
解决办法
439
查看次数

std :: unordered_multiset的用例

我想知道为什么会用std::unordered_multiset。我的猜测是它与插入/擦除后迭代器的无效或非无效有关,但也许更深层吗?非常相似的问题在这里:std :: multimap的用例,但更多是关于地图的讨论。

stl hashset c++11 unordered-multiset

3
推荐指数
1
解决办法
1379
查看次数

仅从unordered_multiset中删除一个项目

我想删除一个特定元素std::unordered_multiset,但是当我尝试使用erase函数时,它会消除所有项目,无论它们有多少.
例如:

std::unordered_multiset<int> M;
M.insert(1);
M.insert(1);
M.insert(1);
std::cout<<M.count(1)<<std::endl;

M.erase(1);
std::cout << M.count(1) << std::endl;
Run Code Online (Sandbox Code Playgroud)

我希望这打印3然后2.但它打印3然后0.所以如何只删除一个项目?

c++ stl set erase unordered-multiset

1
推荐指数
1
解决办法
486
查看次数

为什么 multiset 保留重复元素的单独实例而不是它们的计数?

我最近发现multiset<T>STL中的实现实际上在树中保留了相同重复元素的不同副本。我之前的期望是它在内部使用 amap<T, int>并只保留重复元素的数量。

与仅保持计数相比,此实现在哪些情况下有益?multiset如果内部实现发生变化,是否有任何用例会导致代码中断?或者是否有任何操作如果更改会增加复杂性?

我想知道这个选择背后的思考过程是什么?

c++ time-complexity multiset unordered-multiset

1
推荐指数
1
解决办法
82
查看次数