矢量操纵

myo*_*yol 1 c++ vector

我不擅长C++.我有一个非常短的C++脚本,我试图转换为PHP处理向量.

从在线文档我收集到的向量是东西的列表,有点像PHP中的数组,但功能较少.但是,我很难找到关于矢量操作的好文档.

例如

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

在这个片段中,我可以猜测一些与之相关的结果Last - First.

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

我正在尝试RTFM,但我偶然发现的一些在线资源并没有特别有见地(尽管我可能无法提出/搜索正确的问题)

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

BoB*_*ish 6

该函数不需要2 vector秒,而是2 iterators,它指向a内的特定位置vector.在这种情况下,第一个和最后一个元素.这是一个普通的C++习语.(注意,迭代器实际上可能表示现有的一些子部分,vector实际上并不一定是整个部分).

因此,差异是该元素的总数vector.通常,会有一个循环处理每个元素,并递增First直到它命中Last.

1|2|3|4|5|
^First    ^Last
Run Code Online (Sandbox Code Playgroud)

请注意,Last它没有指向5,而是一个经过它.Last不是一个有效的元素vector,而是一个哨兵,表示何时停止循环.

在这种情况下Last-First == 5,因为您必须增加First5次才能命中Last.

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

你的链接:

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

  • cplusplus.com:非官方参考文档网站.在过去,修复错误并不是很好.很多人都喜欢:

  • cppreference.com:社区维护的参考文档维基.

除了The Standard之外没有"官方"参考文档,其中的草稿可以在isocpp.org上找到,但实际上,不要试图阅读它,它只是专家,针对编译器实现者.我甚至都没有链接到它.

说实话,我很难在网上找到一个非常好的初学者教程.