C++ 按值从向量中获取对象
这似乎是个愚蠢的问题,但我只是想验证一下。如果我想通过值获得向量中的对象,我可以使用[],对吗?如果我想引用它,我需要使用myvector.at(),对吗?有没有办法按值返回项目?例如: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
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]
将通过引用获取返回值并将其转换为值。