矢量操纵
Vector manipulation
我不精通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个vector
s,而是占用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上找到,但实际上,不要试图阅读,它只是针对编译器实现者的专家。我甚至不打算链接到它。
老实说,我很难在网上找到一个真正好的初学者教程。
- C++setiosflags函数操纵器-未确定的缩进
- C++表达SFINAE和ostream操纵器
- 操纵安卓相机的深度图导致应用程序崩溃
- 什么是现实中的"endl"(或任何输出操纵器)?它是如何实现的,它如何与操作员<<一起工
- 有关具有编译错误的操纵列表的问题
- C++自定义流操纵器,用于更改流上的下一个字符串
- 如何使用自定义流操纵器在类实例中保存数据
- 如何键入用于const对象的自定义io操纵器
- 如何实现接受参数的自定义流操纵器?
- I/O 操纵器错误或临时延长寿命由 const 参考?
- 如何编码为像 STL IO 操纵器函数这样的样式?
- 从QML ListView中QABStractListModel中的数据操纵数据
- 一系列宣言和操纵
- 保证原子性的单位操纵
- 操纵桌面图标的位置
- 输出操纵器 std::ends 是否向输出缓冲区添加空字符?
- 位操纵:更难掷硬币
- 如何操纵指针代表C 的对象
- 使用一系列指针对计算机来操纵指向(C )的指针
- C 操纵器,可以将SetPrecision Manip与SetFill Manip相结合