|
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122
|
||||||||||||||||
Передача функции указатель на элемент std::vector<std::string>05.06.2012, 02:41. Показов 14054. Ответов 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>? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|