Вы не должны делать это за один 1 цикл.
for (auto i = eTerriers.begin(); i != eTerriers.end(); ++i)
{
for (auto j = i; j != eTerriers.end(); ++j)
{
EXPECT_LE((*i), (*j));
std::cout << "i and j value " << *i << *j << std::endl;
}
}
1 : я включаю что-нибудь из <algorithm>
по крайней мере, линейный в своих аргументах итератора как цикл для подсчета циклов
Если у вас менее строгий подсчет циклов, вы можете
#include <algorithm>
for (auto i = eTerriers.begin(); i != eTerriers.end(); ++i)
{
std::for_each(i, eTerriers.end(), [i](auto & val)
{
EXPECT_LE((*i), (val));
std::cout << "i and j value " << *i << val << std::endl;
});
}
Есть один способ,но он включает в себя if
в цикле и ужасен.
constexpr std::size_t data = 3;
for (std::size_t i = 0; i < (data * data); ++i)
{
if ((i % data) <= (i / data))
{
EVTValSortedVector<int>::iterator j = eTerriers.begin() + (i % data);
EVTValSortedVector<int>::iterator k = eTerriers.begin() + (i / data);
EXPECT_LE((*j), (*k));
cout << "j and k value" << *j << *k << endl;
}
}
Переосмыслите ваши требования.