gpt4 book ai didi

c++ - 为什么我不能放置/插入到我的 map 中?

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

此代码片段在 VS 2015 中失败(我没有任何其他编译器可以对其进行测试):

class loader
{
bool parseMeta() const
{
for (auto it = meta_.begin(); it != meta_.end(); ++it)
{
std::string line(*it);
size_t n = line.find_first_of("=", 2);
if (n == std::string::npos) { return false; }

std::string key = line.substr(2, n);
std::string value = line.substr(n + 1);
kvp_.emplace(std::make_pair(key, value)); // <-- HERE
}
return true;
}

private:
std::vector<std::string> meta_;

std::map<std::string, std::string> kvp_;
};

给出这个可爱的错误: error C2662: 'std::pair<std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const _Kty,_Ty>>>>,bool> std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>::emplace<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::basic_string<char,std::char_traits<char>,std::allocator<char>>>>(std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::basic_string<char,std::char_traits<char>,std::allocator<char>>> &&)': cannot convert 'this' pointer from 'const std::map<std::string,std::string,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' to 'std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>> &

但是如果我移动kvp_到标记的故障线上方的线(由 <-- HERE 表示),然后错误消失。

insert相同.我试过制作 string s const但这没有效果。为什么会这样?我的代码有什么问题?

最佳答案

该方法被标记为 const,因此您不能修改其范围内的成员变量。

改变

bool parseMeta() const

bool parseMeta()

它应该可以编译。

关于c++ - 为什么我不能放置/插入到我的 map 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34042194/

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