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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
#1

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

30.03.2013, 12:43. Просмотров 373. Ответов 5
Метки нет (Все метки)

Всем привет,

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

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]; // снова ошибка
Буду рад если объясните как правильно обратиться.

Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2013, 12:43     Обращение к вектору полученному через указатель
Посмотрите здесь:

C++ Обращение к перегруженному оператору () через указатель на объект
Обращение к функции через указатель C++
C++ Сравнение (значение из ряда, наиболее близкое к полученному)
Обращение к элементам класса через [] C++
C++ Можно ли значение вектора A передать вектору B через swap?
Обращение к элементам массива используя указатель C++
C++ Вывести указатель - куча ошибок (недопустимое косвенное обращение, ...)
C++ Обращение к элементам std::vector используя указатель
C++ Двумерный массив через указатель
Обращение к переменной через класс C++
Проверка индексов при доступе к вектору через [] C++
массив классов, задание и обращение к элементам через указатель C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hellrider_
49 / 49 / 2
Регистрация: 12.03.2013
Сообщений: 155
30.03.2013, 13:06     Обращение к вектору полученному через указатель #2
Лучше всего использовать итераторы для доступа, если это вам нужно
C++
1
2
3
std::vector<short> vec;
std::vector<short>::iterator it;
it = vec.begin(); //указывает на первый элемент вектора
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_
49 / 49 / 2
Регистрация: 12.03.2013
Сообщений: 155
30.03.2013, 13:21     Обращение к вектору полученному через указатель #4
Цитата Сообщение от sandye51 Посмотреть сообщение
второй вариант ближе к истине, но только тут надо поставить дополнительные скобки
C++
1
input = (*samples)[i];
потому что теперь сначала получаем ссылку на объект, а потом только применяем оператор []
ну или еще есть такой вариант
C++
1
input = samples->operator[](i);
но лучше использовать первый вариант


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

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

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

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