gpt4 book ai didi

c++ - 在 C++ 映射上使用迭代器删除

转载 作者:行者123 更新时间:2023-12-03 06:54:13 25 4
gpt4 key购买 nike

我遇到了以下行为:我创建了一个 map ,在键上查找并删除了 map 条目。删除后,我使用迭代器打印元素,我预计它会转储核心但它有效。

为什么有效?

     typedef std::pair<std::string, int> pair;
std::map<pair, int> nameidCntMap;

pair pair1("ABC", 139812);
pair pair2("XYZ", 139915);
pair pair3("PQR", 139098);


nameidCntMap.insert(std::make_pair(pair1, 1));
nameidCntMap.insert(std::make_pair(pair2, 1));
nameidCntMap.insert(std::make_pair(pair3, 1));

std::map<pair, int>::iterator it = nameidCntMap.find(pair1);
if (it != nameidCntMap.end())
{
symsrcidCntMap.erase(it);

std::cout<<"Pair::first: "<<it->first.first << "Pair::second: "<<it->first.second<<"map second:"<<it->second<<std::endl;
}

最佳答案

Why does it work?

它不“工作”。

程序的行为未定义。

expected it to dump core

您的期望被误导了。当您间接通过无效的迭代器时,该程序未定义为“转储核心”。没有为此类程序定义行为。因此,任何行为都是可能的。在所有可能的行为中,有可能该行为是您没有预料到的,或者您认为“有效”的行为。

关于c++ - 在 C++ 映射上使用迭代器删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64905918/

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