我有一个结构的向量vec,这样的结构有元素int a, int b, int c,我想给int var赋值元素c,从向量的最后一个结构开始,请你给我提供这个简单的解决方案,我这样画圈:
int a, int b, int c
int var
var = vec.end().c;
3df52oht1#
可以使用back()成员来直接回答您关于获取对向量中最后一个元素的访问权限的问题。
back()
int var = vec.back().c;
注:如果您的向量可能为空,则对back()的此类调用会导致未定义的行为。在这种情况下,您可以使用empty()成员在使用back()之前检查向量的空状态:
empty()
if (!vec.empty()) var = vec.back().c;
这两种方法中可能有一种适合您的需要。
nuypyhwy2#
vec.end()是一个迭代器,它引用向量中的结束后位置。因此,您不能遵从它并访问成员值。vec.end()迭代器始终有效,即使在空向量中也是如此(在这种情况下为vec.end() == vec.begin())如果你想访问向量的最后一个元素,使用vec.back(),它返回一个引用(而不是迭代器),但是要注意如果向量为空,这将导致一个未定义的行为;很可能是撞车。
vec.end()
vec.end() == vec.begin()
vec.back()
6bc51xsx3#
使用back():
var = vec.back().c;
eqqqjvef4#
试试这个:var = vec.back().c;您也可以修改您的代码如下:
var = vec.rbegin()->c;
在这两个版本中,首先要确保向量不为空!
xkrw2x1b5#
var = vec.back().c;就是你想要的。end()返回向量末尾之后的迭代器(不是元素)。back()返回对最后一个元素的引用。它也有一个对应的front()。
end()
front()
gzszwxb46#
您可以简单地使用back,因为它返回对最后一个元素的引用。var = vec.back().c
back
var = vec.back().c
qv7cva1a7#
您可以使用std:vector<T>:back()函数,例如vec.back().c。请参见http://www.cplusplus.com/reference/vector/vector/back/
std:vector<T>:back()
vec.back().c
yqkkidmi8#
下面的代码对我有效。
int var; var = *(std::end(bar)-1); std::cout<<var<<std::endl;
8条答案
按热度按时间3df52oht1#
可以使用
back()
成员来直接回答您关于获取对向量中最后一个元素的访问权限的问题。注:如果您的向量可能为空,则对
back()
的此类调用会导致未定义的行为。在这种情况下,您可以使用empty()
成员在使用back()
之前检查向量的空状态:这两种方法中可能有一种适合您的需要。
nuypyhwy2#
vec.end()
是一个迭代器,它引用向量中的结束后位置。因此,您不能遵从它并访问成员值。vec.end()
迭代器始终有效,即使在空向量中也是如此(在这种情况下为vec.end() == vec.begin()
)如果你想访问向量的最后一个元素,使用
vec.back()
,它返回一个引用(而不是迭代器),但是要注意如果向量为空,这将导致一个未定义的行为;很可能是撞车。6bc51xsx3#
使用
back()
:eqqqjvef4#
试试这个:
var = vec.back().c;
您也可以修改您的代码如下:
在这两个版本中,首先要确保向量不为空!
xkrw2x1b5#
var = vec.back().c;
就是你想要的。end()
返回向量末尾之后的迭代器(不是元素)。back()
返回对最后一个元素的引用。它也有一个对应的front()
。gzszwxb46#
您可以简单地使用
back
,因为它返回对最后一个元素的引用。var = vec.back().c
qv7cva1a7#
您可以使用
std:vector<T>:back()
函数,例如vec.back().c
。请参见http://www.cplusplus.com/reference/vector/vector/back/yqkkidmi8#
下面的代码对我有效。