vector ::参考文献

dwe*_*h91 2 c++ reference vector

鉴于此定义:

vector<some_struct_t> lots_of_stuff;
Run Code Online (Sandbox Code Playgroud)

而且vector::at返回引用的事实,这段代码对我有意义:

some_struct_t & ref_element = lots_of_stuff.at(0);
Run Code Online (Sandbox Code Playgroud)

但是,这段代码也可以编译并且似乎有效:

some_struct_t val_element = lots_of_stuff.at(0);
Run Code Online (Sandbox Code Playgroud)

如何在这里进行非参考工作?是否正在调用复制构造函数?为什么这样做?

Ste*_*Chu 6

非引用的一个从返回的引用到您的对象的副本.对象的更改不会应用于向量中的对象,如引用版本所做的那样.