用 C++20 的给定键读取/写入 std::multimap 的所有值?
Read/write all values of a std::multimap with a given key in C++20?
假设我有一些函数:
void mutate(V& v);
读取/写入v
- 我想写一个函数:
void mutate_map_values(std::multimap<K,V>& m, K k);
这mutate
适用于具有键k
的所有m
值。
在 C++20 中实现mutate_map_values
的最简洁方法是什么?
std::ranges::subrange
是一个实用程序类,可以从任何类似于一对迭代器的东西构造。这符合std::multimap::equal_range
已经返回的内容。结合两者,我们可以在 C++20 中编写如下所需的函数:
#include <ranges>
void mutate_map_values(std::multimap<K,V>& m, K k) {
using namespace std::ranges;
for (auto& [_, v] : subrange(m.equal_range(k))) {
mutate(v);
}
}
相关文章:
- 使用std::multimap迭代器创建std::list
- std::multimap<std::chrono::milliseconds, T>::rbegin 在 MSVS-13 中指向 end()?
- C++在使用std::multimap时出现运行时错误的几率很小
- 用 C++20 的给定键读取/写入 std::multimap 的所有值?
- std::multimap::erase() 在迭代时
- 访问 std::multimap 值的最佳方式?
- 如何使用 std::multimap 将整数键映射到两个用作多维数组坐标的整数值(对于井字)?
- "std::multimap"是否保证每个键的实际值在相等范围内?
- 特定键在 std::multimap 中出现的次数
- swig:std/multimap.i似乎打破了TCL包装
- 如何使用"std::multimap"或任何其他容器对多个值进行排序?
- c++ 为什么 std::multimap 比 std::p riority_queue 慢
- std :: multimap :: emplace覆盖旧键
- 初始化静态std :: multimap在其中声明的方法
- 我从std :: multimap.lower_bound获得了无效的指针
- 哪个元素将从 std::multimap::find 返回,同样,std::multiset::find
- 使用 std::multimap,是否可以保证 begin() 方法返回最新的元素
- 为什么 std::multimap 没有 [] 运算符
- 如何获取 std::multimap 给定键"previous"项的迭代器(或值)?
- 将 std::multimap 转换为 std::p riority_queue