Форум программистов, компьютерный форум CyberForum.ru

Обращение к вектору полученному через указатель - C++

Восстановить пароль Регистрация
 
Hrundel
25 / 25 / 2
Регистрация: 27.05.2012
Сообщений: 114
30.03.2013, 12:43     Обращение к вектору полученному через указатель #1
Всем привет,

Появился вопрос по поводу обращения к вектору полученному через указатель.
Выглядит так:
Передаю адрес вектора в указатель:

C++
1
2
3
4
5
std::vector<short> *getData(){return &sampleData;}
 
std::vector<short> *samples;
 
samples = wav.getData();
Дальше мне нужно опрашивать поля вектора, но пока что-то не получается потому, что не знаю толком как?

А делаю так:

C++
1
2
input = samples[i];  // ошибка
input = *samples[i]; // снова ошибка
Буду рад если объясните как правильно обратиться.

Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hellrider_
 Аватар для Hellrider_
42 / 42 / 1
Регистрация: 12.03.2013
Сообщений: 107
30.03.2013, 13:06     Обращение к вектору полученному через указатель #2
Лучше всего использовать итераторы для доступа, если это вам нужно
C++
1
2
3
std::vector<short> vec;
std::vector<short>::iterator it;
it = vec.begin(); //указывает на первый элемент вектора
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
30.03.2013, 13:19     Обращение к вектору полученному через указатель #3
Цитата Сообщение от Hrundel Посмотреть сообщение
input = samples[i]; *// ошибка
input = *samples[i]; // снова ошибка
второй вариант ближе к истине, но только тут надо поставить дополнительные скобки
C++
1
input = (*samples)[i];
потому что теперь сначала получаем ссылку на объект, а потом только применяем оператор []
ну или еще есть такой вариант
C++
1
input = samples->operator[](i);
но лучше использовать первый вариант

Цитата Сообщение от Hellrider_ Посмотреть сообщение
Лучше всего использовать итераторы для доступа, если это вам нужно
аргументы?
Hellrider_
 Аватар для Hellrider_
42 / 42 / 1
Регистрация: 12.03.2013
Сообщений: 107
30.03.2013, 13:21     Обращение к вектору полученному через указатель #4
Цитата Сообщение от sandye51 Посмотреть сообщение
второй вариант ближе к истине, но только тут надо поставить дополнительные скобки
C++
1
input = (*samples)[i];
потому что теперь сначала получаем ссылку на объект, а потом только применяем оператор []
ну или еще есть такой вариант
C++
1
input = samples->operator[](i);
но лучше использовать первый вариант


аргументы?
Удобнее имхо
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
30.03.2013, 13:22     Обращение к вектору полученному через указатель #5
зато медленно
Hrundel
25 / 25 / 2
Регистрация: 27.05.2012
Сообщений: 114
30.03.2013, 13:28  [ТС]     Обращение к вектору полученному через указатель #6
Всем спасибо!

Буду обращаться так:

C++
1
input = (*samples)[i];
Выглядит элегантнее
Yandex
Объявления
30.03.2013, 13:28     Обращение к вектору полученному через указатель
Ответ Создать тему
Опции темы

Текущее время: 02:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru