|
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122
|
||||||||||||||||
Передача функции указатель на элемент std::vector<std::string>05.06.2012, 02:41. Показов 13977. Ответов 14
Метки нет (Все метки)
Доброй ночи тем, кому не спится (или живет в другом часовом поясе
)!Есть функция, требующая в качестве параметра указатель на std::string
Я вроде понимаю, почему, но другого варианта, кроме как предварительно загнать все это в строку, а потом передать указатель на нее я не знаю. Добавлено через 6 минут Че-то я так подумал, раз в строку загнать можно, а потом передать ее адресс в функцию можно, значит получится как-то и с вектором! Написал как-то так:
Скажите, правильно ли так писать?
0
|
||||||||||||||||
| 05.06.2012, 02:41 | |
|
Ответы с готовыми решениями:
14
Реализация класса MyString. Стандартная библиотека, std::string, std::vector Error C2664: std::vector<_Ty>::push: невозможно преобразовать параметр 1 из 'double' в 'const std::string &' |
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||
| 05.06.2012, 02:45 | ||||||
|
ой вей
1
|
||||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 05.06.2012, 02:46 | |
|
Можно просто записать &v[ i ]; и будет передан адрес i-того объекта.
0
|
|
|
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122
|
|
| 05.06.2012, 02:59 [ТС] | |
|
alex_x_x, в main у меня определен указатель на вектор, а не сам вектор, + функция у Вас принимает ссылку, а не указатель. Хотя можно будет попробовать этот метод, но меня сейчас интересует именно с указателями
![]() Toshkarik, неа, тоже не работает, та же ошибка. v и так уже указатель. Либо я что-то недопонял. Вот моя логика: *v возвращает сам вектор, (*v)[i] - i-тый элемент вектора, &( (*v)[i] ) - его адрес (скобки специально разделил для читаемости)
0
|
|
|
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122
|
|
| 05.06.2012, 03:05 [ТС] | |
|
Toshkarik, Это потому что объявлен вектор, а не указатель на него. У меня указатель
0
|
|
| 05.06.2012, 03:15 | |
|
Не по теме: Не заметил этого...
0
|
|
|
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122
|
|
| 05.06.2012, 11:29 [ТС] | |
|
То есть рекомендуется передавать ссылки, а не указатели в функции в C++, верно?
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 05.06.2012, 11:36 | ||
|
0
|
||
|
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122
|
|
| 05.06.2012, 11:44 [ТС] | |
|
если p - указатель на что-либо, то *p вернет значение, хранящееся по адресу p. При объявлении звезда указывает на то, что объявляется указатель. Да и то, что я написал в том посте, работает.
&v[i] вернет адрес только если v - вектор, а не указатель на него
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||||||
| 05.06.2012, 11:56 | ||||||||||
Добавлено через 1 минуту Добавлено через 3 минуты
0
|
||||||||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 05.06.2012, 12:44 | |
|
taras atavin, Вы наверно не заметили так же как и я. v - это указатель всего на один объект vector. В данном случае, что бы получить какой либо объект нужно разыменовать сначала сам указатель, и только потом применять нотацию индексов, так как v указывает всего лишь на один объект. И индексацию нужно применять именно к этому объекту, а не к указателю.
1
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||||||
| 05.06.2012, 12:59 | |||||||||||
|
Да, тогда &((*v)[i]), так как v[i] теперь - i-й элемент массива векторов, а там только один 0-й элемент (даже если в new не было квадратных скобок, то [0] всё равно допускается, так как
1
|
|||||||||||
|
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122
|
|
| 05.06.2012, 14:47 [ТС] | |
|
Спасибо за ответ! Как мне уже посоветовали, я буду использовать ссылки
0
|
|
| 05.06.2012, 14:47 | |
|
Помогаю со студенческими работами здесь
15
ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию?
Как изменять размер std::vector<std::vector>? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|