Нужно внутри функции получить доступ к элементам контейнера только на чтение. Как более правильно (эффективнее) это сделать?
В каких случаях следует использовать передачу ссылки на контейнер (как в f1), а в каких случаях итераторы (как в f2, почему-то в stl именно так):
void f1(const std::vector<int> & x){
// ... used all elements of x
}
void f2(const std::vector<int>::const_iterator beg,const std::vector<int>::const_iterator end){
// ... used all elements
}
// ...
std::vector<int> y = {1,2,3};
f1(y);
f2(y.begin(),y.end());