在C++中如何从向量的最后一个元素中得到一个字段?

z2acfund  于 2023-02-14  发布在  其他
关注(0)|答案(8)|浏览(158)

我有一个结构的向量vec,这样的结构有元素int a, int b, int c,我想给int var赋值元素c,从向量的最后一个结构开始,请你给我提供这个简单的解决方案,我这样画圈:

var = vec.end().c;
3df52oht

3df52oht1#

可以使用back()成员来直接回答您关于获取对向量中最后一个元素的访问权限的问题。

int var = vec.back().c;

注:如果您的向量可能为空,则对back()的此类调用会导致未定义的行为。在这种情况下,您可以使用empty()成员在使用back()之前检查向量的空状态:

if (!vec.empty())
   var = vec.back().c;

这两种方法中可能有一种适合您的需要。

nuypyhwy

nuypyhwy2#

vec.end()是一个迭代器,它引用向量中的结束后位置。因此,您不能遵从它并访问成员值。vec.end()迭代器始终有效,即使在空向量中也是如此(在这种情况下为vec.end() == vec.begin()
如果你想访问向量的最后一个元素,使用vec.back(),它返回一个引用(而不是迭代器),但是要注意如果向量为空,这将导致一个未定义的行为;很可能是撞车。

6bc51xsx

6bc51xsx3#

使用back()

var = vec.back().c;
eqqqjvef

eqqqjvef4#

试试这个:var = vec.back().c;
您也可以修改您的代码如下:

var = vec.rbegin()->c;

在这两个版本中,首先要确保向量不为空!

xkrw2x1b

xkrw2x1b5#

var = vec.back().c;就是你想要的。
end()返回向量末尾之后的迭代器(不是元素)。back()返回对最后一个元素的引用。它也有一个对应的front()

gzszwxb4

gzszwxb46#

您可以简单地使用back,因为它返回对最后一个元素的引用。
var = vec.back().c

qv7cva1a

qv7cva1a7#

您可以使用std:vector<T>:back()函数,例如vec.back().c。请参见http://www.cplusplus.com/reference/vector/vector/back/

yqkkidmi

yqkkidmi8#

下面的代码对我有效。

int var;
var =  *(std::end(bar)-1);
std::cout<<var<<std::endl;

相关问题