由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一个C++ set和unordered_set iterator的问题
相关主题
T家电面面经并且不解为何被秒拒Dream company Onsite被搞了(少量面经)
C++ Q66: reverse a string -- is it efficient请教一道G题的代码量
【一个BB公司问的字母排序的问题】求问一道G家Onsite题
Char x[] = "abc"; 是在heap还是stack上? (转载)LC Longest substr w/o rep char
请教c++的string vector问题,谢谢!C++ Q68: initialization (skillport)
谁能猜猜,这是个什么 algorithm?请教word ladder解法,大test超时
请教一道题目A question about C++. Thanks.
Surrounded RegionsC++ online Test 又一题
相关话题的讨论汇总
话题: string话题: iterator话题: foo话题: set话题: void
进入JobHunting版参与讨论
1 (共1页)
e*******s
发帖数: 1979
1
以下这段代码 把set的iterator直接传递到parameter为reference的函数里
报错
test.cpp: In function 'int main()':
test.cpp:110: error: invalid initialization of reference of type 'std::
string&' from expression of type 'const std::basic_string traits, std::allocator >'
test.cpp:67: error: in passing argument 1 of 'void foo(std::string&)'
make: *** [a] Error 1
如果修改代码
1. void foo(string &s) --> void foo(string s)
2. string s = *it; foo(s);
3. void foo(string &s) --> void foo(const string &s)
4. unordered_set vs --> vector vs;
都不会报错.
原因是什么呢, 1. 2.可以理解为dereference不能传入reference parameter中去,因
为可能会引用局部变量
3. 可以理解为不能修改set::iterator指向都局部变量
4. 就很奇葩了, vector::iterator 和 set::iterator的区别不应该在dereference上把
在标准上好像就是random access iterator 和 bidirectional iterator的区别
编译器是 gcc 4.4.2
void foo(string &s)
{
return;
}
unordered_set vs;
for(auto it = vs.begin(); it != vs.end(); ++it){
foo(*it);
}
l*********8
发帖数: 4642
2
unordered_set 或者set的iterator指向的内容是const的。
否则, 如果你可以修改*it, 那么*it在hash map or bst里面的位置就要改变了,那么
这个iterator就要变成invalid了。 乱套了。

【在 e*******s 的大作中提到】
: 以下这段代码 把set的iterator直接传递到parameter为reference的函数里
: 报错
: test.cpp: In function 'int main()':
: test.cpp:110: error: invalid initialization of reference of type 'std::
: string&' from expression of type 'const std::basic_string: traits, std::allocator >'
: test.cpp:67: error: in passing argument 1 of 'void foo(std::string&)'
: make: *** [a] Error 1
: 如果修改代码
: 1. void foo(string &s) --> void foo(string s)

m*******g
发帖数: 410
3
没有看出问题啊。
1 (共1页)
进入JobHunting版参与讨论
相关主题
C++ online Test 又一题请教c++的string vector问题,谢谢!
bloomberg 问题: C++ construct 时用 new 没"()"谁能猜猜,这是个什么 algorithm?
regex 用DP做对不对啊?请教一道题目
C++ 面试题Surrounded Regions
T家电面面经并且不解为何被秒拒Dream company Onsite被搞了(少量面经)
C++ Q66: reverse a string -- is it efficient请教一道G题的代码量
【一个BB公司问的字母排序的问题】求问一道G家Onsite题
Char x[] = "abc"; 是在heap还是stack上? (转载)LC Longest substr w/o rep char
相关话题的讨论汇总
话题: string话题: iterator话题: foo话题: set话题: void