是否可以比较两个迭代器?使用 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/