2011-12-13 2 views
0

В последнее время у меня было несколько случаев, когда мне нужен был пользователь, чтобы передать набор данных в метод. По-видимому, очень не обязательно иметь параметр const std::vector<stuff>& (или любой конкретный контейнер или массив).Лучшая практика: Передача массивов данных

Есть ли способ, которым я могу (и должен) передавать группы данных в общий метод?

ответ

3

Пропустите два итератора, или, используя C++ 11, вы можете использовать диапазоны. Вот как обычно это делают алгоритмы на C++.

EDIT: Я забыл о новых диапазонах для петель http://en.cppreference.com/w/cpp/language/range-for как имеющих общие диапазоны для алгоритмов. Просто передайте два итератора, чтобы указать диапазон для алгоритмов общего назначения.

+0

Что это за «диапазон», о котором вы говорите? Теперь мне любопытно. –

+0

Дух, не знаю, почему это не произошло со мной. Я с Керреком в ассортименте, хотя получил ссылку на то, о чем вы говорите? – David

0

Конечно. Вы можете передавать итераторы.

0

Я предполагаю, что Mark B означает диапазон для цикла (http://www.cprogramming.com/c++11/c++11-ranged-for-loop.html). Вам необходимо предоставить begin() и end() в вашем классе массива с помощью итератора, который реализует оператор increment ++, оператор неравенства! = И оператор разыменования *

Однако я сторонник прохождения двух итераторов, потому что это также работает с обычными массивами. Вы просто передаете указатели на первый элемент массива и последний элемент массива.