gpt4 book ai didi

c++ - 我正在尝试通过引用函数传递 C++ 映射并遍历它,但我无法编译代码

转载 作者:太空狗 更新时间:2023-10-29 19:49:23 25 4
gpt4 key购买 nike

我有一个相当简单的问题。我正在尝试制作一个通过引用接受 map 并遍历 map 键的函数。

#include <map>
#include <string>
#include <sys/types.h>

using namespace std;

void update_fold_score_map(string subfold,
int32_t index,
int32_t subfold_score,
map<string, int32_t> &fold_scores){
for(map<string, int32_t>::iterator i = fold_scores.begin();
i != fold_scores.end();
i ++){
string current_substring;
string fold;
fold = (*i);
current_substring = fold.substr(index, subfold.size());

if (current_substring == subfold){
if (fold_scores[fold] < subfold_score){
fold_scores[fold] = subfold_score;
}
return;
}
}
}
int main(){
return 0;
}

但是,我在“fold = (*i);”这一行遇到错误其中指出:

compilemap.cpp:16:15: error: no match for ‘operator=’ in ‘fold = i.std::_Rb_tree_iterator<_Tp>::operator* [with _Tp = std::pair<const std::basic_string<char>, int>, std::_Rb_tree_iterator<_Tp>::reference = std::pair<const std::basic_string<char>, int>&]()’

最佳答案

fold = (*i); // <- here

fold属于 std::string类型;而(*i)属于 map<string, int32_t>::value_type类型,恰好是 std::pair<const string, int32_t> .显然,您不能稍后将其分配给前者。

你可能想做的是

fold = i->first; // which extracts "key" from the std::map<>::iterator

关于c++ - 我正在尝试通过引用函数传递 C++ 映射并遍历它,但我无法编译代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9279843/

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