Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

30.03.2013, 12:43. Просмотров 421. Ответов 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]; // снова ошибка
Буду рад если объясните как правильно обратиться.

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2013, 12:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обращение к вектору полученному через указатель (C++):

Обращение к функции через указатель - C++
Добрый день.Объясните для незнающего след.код:в частности строку номер:6class ListItem { public: void Append(ListItem *pItem) { ...

Обращение к перегруженному оператору () через указатель на объект - C++
Собственно, как? class MyClass { .. void operator() (int _i) { cout &lt;&lt; &quot;operator()&quot; &lt;&lt; _i &lt;&lt; endl; } ...

массив классов, задание и обращение к элементам через указатель - C++
Доброе время суток!! Помогите новичку разобраться с классами! Очень надо как всегда:) Задан класс class A { int m; ...

Обращение к методам класса через указатель на экземпляр класса - C++
Добрый день. Не могу осилить проблему: Описан абстрактный класс. Описаны наследники этого класса уже без абстрактности. Описан...

Проверка индексов при доступе к вектору через [] - C++
При написании кода сталкиваюсь с дилеммой: использовать at или operator при работе с std::vector или подобными вещами. Для релиза то явно...

Можно ли значение вектора A передать вектору B через swap? - C++
А возможно ли такое сделать через swap: значение вектора A передать вектору B, при этом у вектора A должно остаться свое значение. ...

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


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

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

C++
1
input = (*samples)[i];
Выглядит элегантнее
0
30.03.2013, 13:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2013, 13:28
Привет! Вот еще темы с ответами:

Обращение к элементам массива используя указатель - C++
Необходимо написать программу, выделив под массив динамически память. Обращаться к элементам массива необходимо используя указатель. ...

Обращение к элементам std::vector используя указатель - C++
Доброго времени суток. В цикле обрабатывается большое количество элементов вектора. Прочел, что обращение через индекс в 2а раза...

Вывести указатель - куча ошибок (недопустимое косвенное обращение, ...) - C++
Простите, туплю жестоко. Два месяца не трогал студию, забыл все конкретно. int peremennaya=5461; int Pperemennaya=*peremennaya; ...

Степень вывести через указатель,a десятичный логарифм через функцию рекуренционную - C++
Написать функции,где 3 натуральных числа a,b,c(a/b-десятичный логарифм).Чтобы степень вывести через указатель,a десятичный логарифм через...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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