| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > указатель на элемент вектора |
| Автор: kuvshinka 28.8.2013, 15:51 | ||
дано
подскажите пож-та как мне сделать так, чтобы ptr1 указывал бы на, например, 5-ый элемент vec1; (ptr1 = ???) |
| Автор: htzg 28.8.2013, 15:58 | ||||||
может быть так...
|
| Автор: Amp 28.8.2013, 19:39 |
| Зачем тебе этот указатель? Он запросто может стать невалидным. |
| Автор: kuvshinka 28.8.2013, 21:48 | ||
| Amp: заполняю объявленный выше вектор (вектор или указатель на него - мне не принципиально) данными, потом по некоторому условию узнаю номер элемента этого вектора, который мне нужен и хочу использовать этот элемент, используя указатель на него... а вообще алгоритм и реализация (как мне представляется) таковы:
|
| Автор: Amp 29.8.2013, 10:48 |
| Например &vec->at(123). Я клоню к тому, что добавление нового элемента в вектор или какие-то другие операции с вектором (тут зависит от реализации) могу вызывать реаллокацию памяти внутри него и объекты просто будут скопированы в другое место, а ты останешься с указателем, который указывает совершенно не туда. |
| Автор: math64 29.8.2013, 14:34 |
| Если нужно работать с указателем, лучше использовать не QVector<A>, а QVector<A*>. Но тогда перед удаленнием вектора или удалении из него элементов, придётся вручную удалять его элементы. |
| Автор: kuvshinka 5.9.2013, 09:20 |
| Amp: преобразование &vec->at(123) неверно - ошибка преобразования "const A*" в "A *" |
| Автор: bsa 5.9.2013, 12:53 |
| kuvshinka, можешь такой вариант попробовать: ptr = &(*vec)[123]; или ptr = &*(vec->begin() + 123); |