C++ unordered_multiset用法总结

本文介绍了C++标准库中的unordered_multiset容器,包括其创建、元素操作(插入、删除、查找)、遍历以及注意事项,通过实例演示了如何在代码中使用它。
摘要由CSDN通过智能技术生成

std::unordered_multiset 是 C++ 标准模板库中的一种无序容器,它允许存储相同键的多个副本,并提供高效的插入、查找和删除操作。以下是 std::unordered_multiset 的用法总结:

包含头文件:

#include <unordered_set>

创建 std::unordered_multiset 对象:

std::unordered_multiset<ValueType> myUnorderedMultiset;
  • ValueType 是集合中元素的类型。

插入元素:

myUnorderedMultiset.insert(value);

删除元素:

myUnorderedMultiset.erase(value);

遍历 std::unordered_multiset

for (const auto& element : myUnorderedMultiset) {
    // 处理每个元素
}

查找元素:

auto it = myUnorderedMultiset.find(value);

if (it != myUnorderedMultiset.end()) {
    // 元素找到
} else {
    // 元素未找到
    // 处理不存在的情况
}

获取元素数量:

size_t count = myUnorderedMultiset.count(value);

获取 std::unordered_multiset 的大小:

size_t size = myUnorderedMultiset.size();

注意事项:

  1. std::unordered_multiset 是无序的,插入的元素的顺序不一定与插入的顺序相同。
  2. 允许存储相同的元素,即允许重复元素。

示例:

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_multiset<int> myUnorderedMultiset;

    // 插入元素
    myUnorderedMultiset.insert(10);
    myUnorderedMultiset.insert(20);
    myUnorderedMultiset.insert(30);
    myUnorderedMultiset.insert(20);

    // 遍历 unordered_multiset
    for (const auto& element : myUnorderedMultiset) {
        std::cout << element << " ";
    }
    std::cout << std::endl;

    // 查找元素
    auto it = myUnorderedMultiset.find(20);
    if (it != myUnorderedMultiset.end()) {
        std::cout << "Element 20 found." << std::endl;
    } else {
        std::cout << "Element 20 not found." << std::endl;
    }

    // 获取元素数量
    size_t count = myUnorderedMultiset.count(20);
    std::cout << "Number of occurrences of 20: " << count << std::endl;

    return 0;
}
  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中,遍历unordered_set容器有多种方法。下面是三种常见的方法: 方法一:使用迭代器进行遍历 可以使用迭代器来遍历unordered_set容器中的元素。例如,可以使用auto关键字来定义一个迭代器,并用begin()和end()函数获取unordered_set容器的起始和结束迭代器。然后,使用循环将迭代器逐个移动并输出元素。 示例代码如下: ``` std::unordered_set<std::string> uset{ "http://c.biancheng.net/c/", "http://c.biancheng.net/java/", "http://c.biancheng.net/linux/" }; for (auto iter = uset.begin(); iter != uset.end(); iter++) { std::cout << *iter << std::endl; } ``` 方法二:使用范围for循环遍历 使用C++11引入的范围for循环语法,可以更简洁地遍历unordered_set容器中的元素。在每次循环中,元素被自动赋值给循环变量,并可以直接输出。 示例代码如下: ``` std::unordered_set<std::string> uset{ "http://c.biancheng.net/c/", "http://c.biancheng.net/java/", "http://c.biancheng.net/linux/" }; for (const auto& element : uset) { std::cout << element << std::endl; } ``` 方法三:使用算法库函数进行遍历 可以使用算法库函数std::for_each来遍历unordered_set容器中的元素。该函数接受一个函数对象(或Lambda表达式)和容器的起始和结束迭代器,并将函数对象应用于每个元素。 示例代码如下: ``` #include <algorithm> void printElement(const std::string& element) { std::cout << element << std::endl; } std::unordered_set<std::string> uset{ "http://c.biancheng.net/c/", "http://c.biancheng.net/java/", "http://c.biancheng.net/linux/" }; std::for_each(uset.begin(), uset.end(), printElement); ``` 这样就可以使用上述三种方法之一来遍历unordered_set容器中的元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [STL无序容器之unordered_set和unordered_multiset](https://blog.csdn.net/andyjkt/article/details/116495385)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值