gpt4 book ai didi

C++,通过 const 引用访问 std::map 元素

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:09 26 4
gpt4 key购买 nike

我对 const 有疑问。说我有:

class A{
friend std::ostream& operator<<(std::ostream& os,const A& myObj);

private:
std::map<int,int> someMap;
int someInteger;
};
std::ostream& operator<<(std::ostream& os,const A& myObj){
os<<myObj.someInteger<<std::endl;
os<<myObj.someMap[0]<<std::endl;
}

由于与 map 的 const 冲突,这种代码在编译时会产生错误(如果我注释掉打印 map 值的那一行就没问题),如果我去掉函数原型(prototype)中的“const”很好。我真的看不出问题在哪里..

有什么帮助吗?

最佳答案

std::map::operator[]不是 const,因为如果元素不存在,它会插入一个元素。在 C++11 中,你可以使用 std::map::at()相反:

myObj.someMap.at(0)

否则,你可以先使用std::map::find检查元素是否存在,

if (myObj.find(0) != myObj.end())
{
// element with key 0 exists in map
} else
{
// do something else.
}

关于C++,通过 const 引用访问 std::map 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13978170/

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