c++ - 比较迭代器,C++

标签 c++ iterator compare

是否可以比较两个迭代器?使用 std::min 的比较

void change ( typename TList <Item *>::Type ::iterator it_begin, typename TList <Item*>::Type ::iterator it_end )
{
   ....
this->items.resize ( index );
   std::sort ( it_begin, std::min (it_end, it_begin += index - 1); //Compare two iterators, exception
....
}

抛出以下异常:

Assertion failed: Vector iterators  incompatible... 

还有其他比较方式吗?

最佳答案

是的。但我怀疑您是否可以使用 std::min 做到这一点。

您可以使用 std::distance函数计算两个迭代器之间的距离。然后您可以使用距离来确定哪个迭代器是较小的迭代器。一旦知道较小的迭代器,就可以将其传递给 std::sort 函数。

这里是 small illustration how to calculate distance :

#include <iostream>
#include <iterator>
#include <vector>

int main() {
    std::vector<int> v(100); //vector of size 100
    std::cout <<(std::distance(v.begin(), v.begin() + 10))<< std::endl;
    std::cout <<(std::distance(v.begin() +25, v.begin() +10))<< std::endl;
}

输出:

10
-15

希望这能让您充分了解如何继续做您想做的事。

关于c++ - 比较迭代器,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5842647/

相关文章:

java - 迭代时修改集合 (Java)

C++ 更快的字符数组比较

image - 如何不仅用直方图比较图像?

c++ - 如何将参数传递给 cmake 进行的 makedepend 调用?

c++ - 双向链表后向指针

c++ - 服务器管理软件如何工作?

php - mysqli_result 好像没有实现 Iterator 接口(interface)

android - 将 List<String> 项与 String 进行比较

c++ - 在析构函数中调用 "compiler is out of heap space"运算符时出现编译器错误 `delete`

c++ - 在 Direct X 中绘制矩形