gpt4 book ai didi

单个对象上的 c++ unordered_map 迭代器

转载 作者:太空狗 更新时间:2023-10-29 21:12:27 25 4
gpt4 key购买 nike

我有一个字符串和一个 (string, Object) 的 unordered_map。我已经有一些代码在 map 上迭代:

for(auto& item : map) {
do_something;
}

我想修改它以在字符串非空时执行 for 循环内的部分并在 map 中找到否则如果字符串为空则对 map 中的所有项目执行此操作。

if(!string.empty()){
item = map.find(string);
do_something;
}
else {
for(auto& item : map) {
do_something;
}
}

我可以在不重写 do_something 或创建单独的函数的情况下执行此操作吗?

最佳答案

遵循您在评论中提出的思路。您可以将范围 for 循环替换为特定范围(由迭代器定义)上的常规 for 循环。要定义它,您需要这样的东西:

auto begin = map.begin(), end = map.end(); // The whole map

if(!string.empty())
std::tie(begin, end) = map.equal_range(string);
// constrain range to the single element

for(; begin != end; ++begin) { // loop over it
auto& item = *begin;
// Do something
}

上面的星星是std::unordered_map::equal_range .

关于单个对象上的 c++ unordered_map 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47338955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com