sp_settriggerorder только относится ПОСЛЕ триггеров.
Самый простой способ - просто буквально переписать код:
for (auto i = foo.begin(); i != foo.end(); ++i) {
for (auto j = i; ++j != foo.end(); /**/) {
std::cout << *i << *j << std::endl;
}
}
Замените auto
на const_iterator для C ++ 98/03. Или поместите его в отдельную функцию:
template<typename It>
void for_each_pair(It begin, It end) {
for (It i = begin; i != end; ++i) {
for (It j = i; ++j != end; /**/) {
std::cout << *i << *j << std::endl;
}
}
}
Используйте const_iterators для обхода. Если вы хотите изменить значения, используйте итератор.
Пример:
typedef std::vector<int> IntVec;
IntVec vec;
// ...
IntVec::const_iterator iter_cur = vec.begin();
IntVec::const_iterator iter_end = vec.end();
while (iter_cur != iter_end) {
int val = *iter_cur;
// Do stuff with val here
iter_cur++;
}