如何从 C 中向量的最后一个元素中获取字段?

新手上路,请多包涵

我有一个结构的向量 vec 。这样的结构具有元素 int a, int b, int c 。我想从向量的最后一个结构中分配一些 int var 元素 c。请问你能给我这个简单的解决方案吗?我要像这样排成一行:

 var = vec.end().c;

原文由 berndh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 676
2 个回答

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

 int var = vec.back().c;

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

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

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

原文由 WhozCraig 发布,翻译遵循 CC BY-SA 3.0 许可协议

vec.end() 是一个迭代器,它引用向量中的末尾位置。因此,您不能尊重它并访问成员值。 vec.end() 迭代器始终有效,即使在空向量中(在这种情况下 vec.end() == vec.begin()

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

原文由 CygnusX1 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题