|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.05.2012, 20:11 | #1 |
Пользователь
Регистрация: 24.12.2011
Сообщений: 54
|
массив +1
Здравствуйте. Нашел рекурсивную функцию (здесь приведена не полностью):
void PrintAllCombinations(const int array[], size_t N, vector<int> &v) { ... PrintAllCombinations(array+1, N-1, v); ... PrintAllCombinations(array+1, N-1, v); ... } Скажите пожалуйста, что делает операция array+1? что при операции +1 происходит с массивом? |
15.05.2012, 20:31 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
указатель на массив начинает указывать на след элемент.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
15.05.2012, 20:33 | #3 |
Пользователь
Регистрация: 24.12.2011
Сообщений: 54
|
это не *(array+1) ли перемещает указатель на массив на следующий элемент?
|
15.05.2012, 20:34 | #4 |
Форумчанин
Регистрация: 02.09.2011
Сообщений: 336
|
Массив это указатель. Следовательно происходит увеличение указателя.
*(array+1) - тут увеличение адреса и разыменование.
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
|
15.05.2012, 20:36 | #5 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
первое смещение указателя, второе его разименование. итог берется следующий элемент по указателю(второй если так проще) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
15.05.2012, 20:54 | #6 |
Пользователь
Регистрация: 24.12.2011
Сообщений: 54
|
А как в таком случае переместить указатель в контейнере vector?
То есть мне в исходной функции надо вместо массива const int array[] использовать vector<my_class>. Как заменить array+1 аналогичной операцией для vector? |
15.05.2012, 20:59 | #7 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2David Villa
использовать итераторы. для вектора можно и без них, но с итераторами тип контейнера будет неважен
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 15.05.2012 в 21:02. |
15.05.2012, 21:05 | #8 |
Пользователь
Регистрация: 24.12.2011
Сообщений: 54
|
А можно подробнее насчет итераторов? И как можно обойтись без них в данном случае?
|
15.05.2012, 21:09 | #9 |
Форумчанин
Регистрация: 02.09.2011
Сообщений: 336
|
David Villa никак. Итераторы как раз и используются для перебора контейнеров.
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
|
15.05.2012, 21:10 | #10 | ||
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2David Villa
Цитата:
Цитата:
Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С# задан массив 5х5. сформировать массивы А и В. в массив А поместить элементы с четными индексами, в массив В с нечетны | Koksa | Помощь студентам | 0 | 10.10.2011 11:26 |
Запись координат в массив в реал тайм, Как записать координаты в массив | Dark19 | Visual C++ | 2 | 21.06.2011 18:45 |
Из массив А получить массив В, удвоив все нечётные элементы удвоены ( на Pascal) | KARTER | Помощь студентам | 1 | 18.06.2011 19:58 |
Массив - Нужно написать массив и распечатать на экран с конца в начало(язык С++) | econ | Помощь студентам | 1 | 29.05.2011 22:02 |