![]() |
|
|
![]()
|
|
| kuvshinka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
дано
подскажите пож-та как мне сделать так, чтобы ptr1 указывал бы на, например, 5-ый элемент vec1; (ptr1 = ???) |
|||
|
||||
| htzg |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
может быть так...
|
||||||
|
|||||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Зачем тебе этот указатель? Он запросто может стать невалидным.
|
|||
|
||||
| kuvshinka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
Amp: заполняю объявленный выше вектор (вектор или указатель на него - мне не принципиально) данными, потом по некоторому условию узнаю номер элемента этого вектора, который мне нужен и хочу использовать этот элемент, используя указатель на него...
а вообще алгоритм и реализация (как мне представляется) таковы:
Это сообщение отредактировал(а) kuvshinka - 28.8.2013, 22:06 |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Например &vec->at(123). Я клоню к тому, что добавление нового элемента в вектор или какие-то другие операции с вектором (тут зависит от реализации) могу вызывать реаллокацию памяти внутри него и объекты просто будут скопированы в другое место, а ты останешься с указателем, который указывает совершенно не туда.
|
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Если нужно работать с указателем, лучше использовать не QVector<A>, а QVector<A*>. Но тогда перед удаленнием вектора или удалении из него элементов, придётся вручную удалять его элементы.
|
|||
|
||||
| kuvshinka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
Amp: преобразование &vec->at(123) неверно - ошибка преобразования "const A*" в "A *"
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
kuvshinka, можешь такой вариант попробовать: ptr = &(*vec)[123]; или ptr = &*(vec->begin() + 123);
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |