常规的可随机访问容器的元素逐一比较操作如下:
auto itend = lines.end();
for (auto iter = lines.begin(); iter != itend - 1; iter++)
for (auto itcmp = iter + 1; itcmp != itend; itcmp++)
if (*iter < *itcmp)
{
// 进行处理
}
但由于STL中序列容器(比如list)不能随机访问,迭代器+1操作也无效,导致遍历list中每个元素和其后的N个元素逐一进行比较会很麻烦,因此记录一下方法,总共用到四个迭代器,其中itcmp是用于比较的,而itcnt用于控制终止。
auto iter = lines.begin(); // 链表起始
auto itend = lines.end(); // 链表末尾
for (auto itcnt = iter; ++itcnt != itend; iter++)
for (auto itcmp = itcnt; itcmp != itend; itcmp++)
if (*iter < *itcmp)
{
// 进行处理
}