Сообщение Re: как передавать элементы контейнера в функцию от 19.04.2016 18:45
Изменено 19.04.2016 18:56 rg45
Здравствуйте, sci_reseacher, Вы писали:
_>Нужно внутри функции получить доступ к элементам контейнера только на чтение. Как более правильно (эффективнее) это сделать?
_>В каких случаях следует использовать передачу ссылки на контейнер (как в f1), а в каких случаях итераторы (как в f2, почему-то в stl именно так):
_>Нужно внутри функции получить доступ к элементам контейнера только на чтение. Как более правильно (эффективнее) это сделать?
_>В каких случаях следует использовать передачу ссылки на контейнер (как в f1), а в каких случаях итераторы (как в f2, почему-то в stl именно так):
| ccode | |
_> | |
using boost::iterator_range;
using std::vector;
void f3(iterator_range<vector<int>::const_iterator> range){
for (auto value : range)
{
// use of elements of the range
}
}
// ...
std::vector<int> y = {1,2,3};
f3(y);
f3(boost::make_iterator_range(boost::next(y.begin()), boost::prior(y.end())));Re: как передавать элементы контейнера в функцию
Здравствуйте, sci_reseacher, Вы писали:
_>Нужно внутри функции получить доступ к элементам контейнера только на чтение. Как более правильно (эффективнее) это сделать?
_>В каких случаях следует использовать передачу ссылки на контейнер (как в f1), а в каких случаях итераторы (как в f2, почему-то в stl именно так):
_>Нужно внутри функции получить доступ к элементам контейнера только на чтение. Как более правильно (эффективнее) это сделать?
_>В каких случаях следует использовать передачу ссылки на контейнер (как в f1), а в каких случаях итераторы (как в f2, почему-то в stl именно так):
| <ccode> | |
_> | |
using boost::iterator_range;
using std::vector;
void f3(iterator_range<vector<int>::const_iterator> range){
for (auto value : range)
{
// use of elements of the range
}
}
// ...
std::vector<int> y = {1,2,3};
f3(y);
f3(boost::make_iterator_range(boost::next(y.begin()), boost::prior(y.end())));