Как использовать фильтр в контроллере?

У вас есть две (три в C ++ 11) опции: const_iterator s и индексы (+ «range-for» в C ++ 11)

void func(const std::vector<type>& vec) {
  std::vector<type>::const_iterator iter;
  for (iter = vec.begin(); iter != vec.end(); ++iter)
    // do something with *iter

  /* or
  for (size_t index = 0; index != vec.size(); ++index)
    // do something with vec[index]

  // as of C++11
  for (const auto& item: vec)
    // do something with item
  */
}

Вам следует использовать != вместо < с итераторами - последний не работает со всеми итераторами, первый будет. С первым вы даже можете сделать код более общим (чтобы вы могли даже изменить тип контейнера, не касаясь цикла)

template<typename Container>
void func(const Container& container) {
  typename Container::const_iterator iter;
  for (iter = container.begin(); iter != container.end(); ++iter)
    // work with *iter
}
629
задан Damjan Pavlica 28 July 2015 в 15:27
поделиться