Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 按值从向量中获取对象_C++_C++14 - Fatal编程技术网

C++ 按值从向量中获取对象

C++ 按值从向量中获取对象,c++,c++14,C++,C++14,这似乎是个愚蠢的问题,但我只是想验证一下。如果我想通过值获得向量中的对象,我可以使用[],对吗?如果我想引用它,我需要使用myvector.at(),对吗?有没有办法按值返回项目?例如: std::vector<Foo> foos; foos.push_back(Foo()); Foo f1 = foos[0]; // by value Foo f2 = foos.at(0); // by reference std::vector foos; 向后推(Foo()); Foo f1

这似乎是个愚蠢的问题,但我只是想验证一下。如果我想通过值获得向量中的对象,我可以使用[],对吗?如果我想引用它,我需要使用myvector.at(),对吗?有没有办法按值返回项目?例如:

std::vector<Foo> foos;
foos.push_back(Foo());
Foo f1 = foos[0]; // by value
Foo f2 = foos.at(0); // by reference
std::vector foos;
向后推(Foo());
Foo f1=foos[0];//按价值
Foo f2=foos.at(0);//参照

这不正确。
vector::operator[]
vector::at
都返回对请求索引处对象的引用。对于
vector::at
,将隐式检查越界错误并引发异常
vector::operator[]
类似于数组访问。

v[i]和
v.at(i)
通过引用返回项目。@Eljay谢谢你,有没有办法按值返回项目?顺便说一句,[]和at之间的区别在于at范围检查,但[]没有
Foo-Foo=foos[0]
将通过引用获取返回值并将其转换为值。