奇怪的错误,set::begin() 总是返回 const 迭代器

2024-04-12

为什么 set.begin() 总是返回一个 const 迭代器而不是标准迭代器?

35 int test(){
36     std::set<int> myset;
37     myset.insert(2);
38     myset.insert(3);
39     int &res = *myset.begin();
40     return res;
41 }


test.cpp:39: error: invalid initialization of reference of type ‘int&’ from expression of type ‘const int’

它没有返回const_iterator,而不是 key_typestd::set<int> is const int.

请记住,键入 astd::set是恒定的。密钥插入密钥组后就无法更改。因此,当您取消引用迭代器时,它必然返回一个constant参考。所以你需要说:

const int &res = *myset.begin();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

奇怪的错误,set::begin() 总是返回 const 迭代器 的相关文章

随机推荐