1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 8
|
|
1 | |
Создание массива указателей на векторы03.02.2011, 13:48. Показов 6394. Ответов 18
Метки нет (Все метки)
Доброго времени суток!
Дано: н-дцать векторов(библиотека STL) Необходимо: создать массив указателей на эти вектора с целью дальнейшего их заполнения. Понимаю, что решение на поверхности, но собрать мосх в кучу уже не могу К вечеру нужно чтоб это несчастье уже заработало, а сил уже никаких... Помогите кто чем может, если не трудно...
0
|
03.02.2011, 13:48 | |
Ответы с готовыми решениями:
18
Создание массива указателей на методы класса TForm2 Создание одного массива из другого с использованием указателей Создание стека в виде массива указателей на разные классы Создание массивов указателей на массивы указателей |
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||||||
03.02.2011, 14:15 | 2 | |||||
Возможно, так?
1
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 8
|
|
03.02.2011, 14:46 [ТС] | 3 |
Хм...
Вообще очень похоже на именно то, что мне нужно. Сейчас потыркаюсь по справочникам уточню значение size_t и окончательно определюсь. И ещё хорошо бы понять, как у меня программа заканчивается неначавшись (но это так... оффтоп) С size_t разобралась. Сейчас попробую в прорамме это реализовать(читай вставить в правильное место). Единственное: можно логику этой строки? точнее сказать в данном случае ** у нас как интерпретируется?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
03.02.2011, 14:52 | 4 | |||||
Эри, Вообще это крайне хреновая идея. Массив указателей на вектора. Не стоит смешивать указатели и STL...
1
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 8
|
|
03.02.2011, 15:05 [ТС] | 5 |
Вы предлагаете создать вктор векторов, на сколько я понимаю?
Косяк в том, что строчками 20-ю ниже мне нужно будет тянуться к векторам. Указатели я представляю как отследить, а вот с вектором несколько сложно. В векторе ведь обрашение идет как в одномерном массиве? А какая максимальная длинна такого вектора? Но в целом совершенно согласна что "мухи отдельно - катлеты отдельно"
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
03.02.2011, 15:45 | 6 |
Эри, Правильно понимаете.
А в чем сложность отслеживания вектора? Да как в одномерном массиве, ну и не только. Максимальная длина... Хм. Полагаю что максимальное значение size_t.
0
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
||||||
03.02.2011, 15:53 | 7 | |||||
1
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 8
|
|
03.02.2011, 16:50 [ТС] | 8 |
rangerx, спасибо, очень доступный пример.
ForEveR, сложность в том, что очень привыкла работать с обычными массивами, обычными указателями. А с данной библиотекой знакома без году неделя. + к тому, как-то не выходит у меня с ними работать [с векторами]. всё как-то криво обращаюсь к ним и получается "лажа".
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
03.02.2011, 18:15 | 9 | |||||
У вектора есть т.н. итераторы, работа с которыми не сильно отличается от работы с указателями. Вот пример (в комментариях показан эквивалентный код с массивами и указателями):
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
03.02.2011, 19:03 | 10 |
Nameless One, Таки NULL использовать не рекомендуется в С++...
Эри, Стоит привыкать. В разы удобнее, безопаснее и прочие достоинства перечислять нет смысла. Понять их можно при использовании. Александров не зря писал - "используйте вектор по умолчанию".
1
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
03.02.2011, 19:06 | 11 |
А в C++ он может не равняться 0? Просто в данном случае я использовал его для наглядности (ну, по крайней мере, мне кажется, что так наглядней)
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
03.02.2011, 19:08 | 12 |
Nameless One, Насчет может не может не знаю... Но Бьярне не советует.
0
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 8
|
|
03.02.2011, 19:25 [ТС] | 13 |
По медленнее уважаемые! Я же записываю!)
Ну вроде скрепя зубами я даже ужилась с векторами... Вроде даже они ужиилисо со мной) Наверное да.
Сообщение от Nameless One
А вариантов других нету судя по всему) Да и в профессиональном смысле стоит уже начать рости. Спасибо огромное Вам всем!
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
03.02.2011, 20:02 | 14 |
Я бы сразу стал использовать вектор векторов))) Но раз уж просили именно так... Мало ли чего там заковыристого надо было извлечь из массива указателей на векторы...
Если ещё интересно: у нас имеется тип: std::vector< int >. Нам надо создать из него массив. Т.е. *array_of_pointers (ведь имя массива - указатель на его начало). Но массив-то должен быть массивом указателей. Поэтому мы добавляем ещё одну звёздочку. Далее память выделяем под такой же тип - под массив указателей, т.е. std::vector< int > *[number_of_elements], где [] - массив, а звёздочка перед [] - указателей.
0
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 8
|
|
03.02.2011, 20:10 [ТС] | 15 |
А вектор, как я понимаю, как и массив не может создаться если не сказать что-то кроме типа о его наполнении?
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
03.02.2011, 20:13 | 16 |
Эри, ну память выделена не будет. Но вам об этом беспокоиться не надо, ведь он динамически расширяемый, просто юзайте push_back и ни о чём не думайте))
0
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 8
|
||||||
03.02.2011, 21:57 [ТС] | 17 | |||||
Хм... У меня пустой совсем вектор векторов отказывается создавать.
В таком случае не ругается. Ну с нулями в начале вектора я вроде обходным путем справилась, но хотелось бы узнать возможные варианты решения проблемы. Компилятор ругается вот так: 1>f:\vkr_v_2\vkr_v_2\vkr.cpp(28) : error C2275: 'std::vector<_Ty>' : illegal use of this type as an expression 1> with 1> [ 1> _Ty=int 1> ] З.Ы. если надо было убрать в тег - извиняюсь...
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||||||
03.02.2011, 22:12 | 18 | |||||
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
03.02.2011, 23:50 | 19 | |||||
Сообщение было отмечено как решение
Решение
Ну и еще, если углубляться в STL...
GCC 4.5+ или MSVS 2010 для компиляции.
3
|
03.02.2011, 23:50 | |
03.02.2011, 23:50 | |
Помогаю со студенческими работами здесь
19
Добавление нового указателя в конец массива указателей, удаление указанного элемента, добавление указателей Массив указателей на массив строк и сортировка массива указателей Даны векторы А(5), В(5), С(5). Проверить есть ли среди них коллинеарные векторы Даны векторы А(5), В(5), С(5). Проверить есть ли среди них ортогональные векторы создание указателей в БД Дан файл, компонентами которого являются n-мерные векторы. Векторы с наибольшим модулем перенести в конец файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |