矢量操纵

Vector manipulation

本文关键字:操纵      更新时间:2023-10-16

我不精通C++。我有一个很短的C++脚本,我正在尝试转换为处理向量的PHP。

从在线文档中,我了解到向量是一些东西的列表,有点像PHP中的数组,但功能较少。然而,我很难找到关于矢量操作的好文档。

例如

real32 test(std::vector<T>::iterator First, std::vector<T>::iterator Last)
{
if(Last - First > 0) {
// do stuff
}
}

在这个片段中,我可以大胆地猜测与Last - First有关的许多结果。

  • 每个向量之间元素数量的差异
  • 每个向量之间元素总和的差异
  • 每个向量中单个元素之间的差异(根据iterator猜测,但这可能是//do stuff part中的for循环)

我正在尝试RTF,但我偶然发现的一些在线资源并没有给人留下特别深刻的印象(尽管我可能无法提出/搜索正确的问题)

在这种情况下,Last - First实际上在做什么?

函数不占用2个vectors,而是占用2个iterators,它们指向vector内的特定位置。在这种情况下,第一个元素和最后一个元素。这是一个正常的C++习惯用法。(请注意,迭代器实际上可能指示现有vector的某个子部分,而不一定是全部)。

因此,差值是vector中的元素的总数。通常,会有一个循环来处理每个元素,并递增First,直到它达到Last

1|2|3|4|5|
^First    ^Last

请注意,Last不是指向5,而是指向它之后的一个。Last不是vector的有效元素,而是一个哨兵,指示何时停止循环。

在这种情况下,Last-First == 5,因为您必须将First增加5倍才能达到Last

参考文档通常不是学习语言的最佳场所。我们确实有书单。

您的链接:

  • isopp.org:关于标准化过程和委员会,这里没有太多实际的语言文档。

  • cplusplus.com:一个非官方参考文献网站。在过去,不是很擅长修复错误。很多人更喜欢:

  • cppreference.com:一个由社区维护的参考文档wiki。

除了《标准》之外,没有其他"官方"参考文件,其草案可以在isocpp.org上找到,但实际上,不要试图阅读,它只是针对编译器实现者的专家。我甚至不打算链接到它。

老实说,我很难在网上找到一个真正好的初学者教程。