获取std :: vector的迭代器索引的最有效方法是什么? | 您所在的位置:网站首页 › 去蚂蚁的有效方法是什么 › 获取std :: vector的迭代器索引的最有效方法是什么? |
如果您已经将算法限制/硬编码为仅使用std::vector::iterator和std::vector::iterator,则最终使用哪种方法都没有关系。您的算法已经具体化,超过了选择另一种算法可能会有所不同的地步。他们俩做的完全一样。这只是个人喜好问题。我个人会使用显式减法。 另一方面,如果您希望在算法中保留更高的通用性,即允许将来某天将其应用于其他迭代器类型,则最佳方法取决于您的意图。这取决于您希望在此使用的迭代器类型有多严格。 如果使用显式减法,则算法将被限制为一类较窄的迭代器:随机访问迭代器。(这是您现在从中得到的std::vector) 如果您使用distance,则您的算法将支持更多种类的迭代器:输入迭代器。 当然,distance通常情况下,对于非随机访问迭代器进行计算是一种低效的操作(而对于随机访问迭代器,其计算与减法一样有效)。由您自己决定算法是否对非随机访问迭代器有意义。如果最终导致效率损失严重到使您的算法完全无用的程度,那么您最好坚持减法运算,从而避免效率低下的使用并迫使用户为其他迭代器类型寻求替代解决方案。如果非随机访问迭代器的效率仍在可用范围内,则应使用distance并记录该算法在随机访问迭代器中效果更好的事实。 |
CopyRight 2018-2019 实验室设备网 版权所有 |