gpt4 book ai didi

C++ 映射插入不良行为

转载 作者:搜寻专家 更新时间:2023-10-31 00:12:24 26 4
gpt4 key购买 nike

考虑以下代码:

// in global space 
int v[50000];

// in a function
int n;
std::cin >> n;
for(int i(0); i < n; ++i)
std::cin >> v[i];

std::map<int, int, std::greater<int>> m;
for(int i(n-1); i > -1; --i){
auto it(m.find(m[v[i]]));
if(it == std::end(m)){
m[v[i]] = i; // (1)
// m.insert({m[v[i]], i}); (2)
// m.insert(std::make_pair(m[v[i]], i)); (3)
}
}
std::cout << "map : \n";
for(auto &x: m)
std::cout << x.first << ' ' << x.second << '\n';

假设我们有输入:3 1 2 3使用第一个版本的 map 插入我得到了预期的结果:

3 2

2 1

1 0

但是我得到了第二个和第三个:

3 0

2 0

1 0

他们应该给出相同的结果..

最佳答案

m.insert({m[v[i]], i}); //(2)

您必须按如下方式更正它:

m.insert({v[i], i}); //(2)

关于C++ 映射插入不良行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30398644/

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