c ++ vector最后一个元素字段

ber*_*ndh 43 c++ structure vector

我有一个结构矢量vec.这种结构具有元素int a,int b,int c.我想从向量中的最后一个结构赋予一些int var元素c.请问您能提供这个简单的解决方案吗?我要像这样排成一行:

var = vec.end().c;
Run Code Online (Sandbox Code Playgroud)

Who*_*aig 84

您可以使用该back()成员完成关于获取对向量中最后一个元素的访问权的问题的直接答案.如:

int var = vec.back().c;
Run Code Online (Sandbox Code Playgroud)

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

if (!vec.empty())
   var = vec.back().c;
Run Code Online (Sandbox Code Playgroud)

可能这两种方法中的一种适用于您的需求.


Cyg*_*sX1 9

vec.end()是一个迭代器,它引用向量中的后端位置.因此,您无法尊重它并访问成员值.vec.end()迭代器总是有效的,即使在空向量中(在这种情况下vec.end() == vec.begin())

如果要访问向量使用的最后一个元素vec.back(),它返回一个引用(而不是迭代器).但请注意,如果向量为空,这将导致未定义的行为; 最有可能是崩溃.


izo*_*ica 5

尝试这个:var = vec.back().c;

您也可以修改您的代码,例如:

var = vec.rbegin()->c;
Run Code Online (Sandbox Code Playgroud)

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