Итерация по всем парам элементов в контейнерах станд. (C++)

sp_settriggerorder только относится ПОСЛЕ триггеров.

14
задан markus 1 December 2009 в 08:50
поделиться

2 ответа

Самый простой способ - просто буквально переписать код:

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;
    }
  }
}
14
ответ дан 1 December 2019 в 14:11
поделиться

Используйте 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++;
}
1
ответ дан 1 December 2019 в 14:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: