6 / 6 / 1
Регистрация: 11.04.2012
Сообщений: 44
|
||||||
1 | ||||||
Vector - out of range или выход за пределы30.07.2012, 10:46. Показов 9914. Ответов 41
Метки нет (Все метки)
Решил в своей программе динам. массивы заменить векторами. Вроде бы делаю все как надо, пушу конец... но когда i = 1000 то вылетает Expression: vector subscript out of range
help plz
0
|
30.07.2012, 10:46 | |
Ответы с готовыми решениями:
41
Выход за пределы вектора ("Vector subscript out of range") - найти и исправить ошибку в коде Выход за пределы vector Struct / Vector / Expression: vector subscript out of range Vector out of range |
30.07.2012, 11:54 | 22 |
а что должна эта операция делать? словами сформулируй, что надо сделать. потому что ты сразу неудачный код с векторами привел, а теперь - кусочек старого. я не могу понять суперзадачу.
0
|
6 / 6 / 1
Регистрация: 11.04.2012
Сообщений: 44
|
|
30.07.2012, 11:56 [ТС] | 24 |
я боюс формулировать, ибо это целый проект на тему радиолокационных измерений, и писать тут я буду долго. Просто я узнал о векторах, какие они замечательные и заменил массивы на векторы
0
|
30.07.2012, 12:06 | 25 |
я не прошу цель всего проекта выложить. просто этот цикл к чему-нибудь привязать. как эти массивы созданы, чем напичканы. тогда можно понять, что этот цикл с ними собирается делать.
0
|
6 / 6 / 1
Регистрация: 11.04.2012
Сообщений: 44
|
||||||
30.07.2012, 12:18 [ТС] | 26 | |||||
в общем есть массив mass_sum. Он получается в результате алгоритма.
например iter = 3; mass_sum[3] {1,-1,-1}; далее к массиву с начала и конца прибавляются нули, кол-во нулей с начала и конца = iter это и будет mass_full
0
|
30.07.2012, 12:29 | 27 | |||||
тогда можно так:
1
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||||||
30.07.2012, 12:41 | 28 | ||||||||||
Код
Код
1
|
6 / 6 / 1
Регистрация: 11.04.2012
Сообщений: 44
|
||||||
31.07.2012, 12:24 [ТС] | 29 | |||||
В одну кучу...
теперь задача чтоб каждый элемент вектора дублировать в соседнюю ячейку. Например vector <int> arr; arr.push_back(1); arr.push_back(-1); значит будет в массиве 1,-1. нужно чтобы было 1,1,-1,-1. Вот моя попытка:
0
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||||||
31.07.2012, 13:33 | 30 | |||||
Эм...
1
|
6 / 6 / 1
Регистрация: 11.04.2012
Сообщений: 44
|
|
31.07.2012, 14:11 [ТС] | 31 |
у меня выводит
-17891602 1 -17891602 -1
0
|
6 / 6 / 1
Регистрация: 11.04.2012
Сообщений: 44
|
|
31.07.2012, 14:47 [ТС] | 33 |
0
|
31.07.2012, 15:01 | 34 | |||||
это был неправильный ответ. внутри такого цикла нельзя изменять вектор, иначе итератор становится "запорченным". лучше так:
это - на случай, если вектор небольшой, или производительность высокая не требуется. если случай другой, то лучше второй вектор создать, сразу зарезервировав память на двойную длину исходного вектора, проитерировать первый вектор, допивывая каждый его элемент в выходной элемент дважды. затем присвоить то, что получилось, первому. будет значительно (!) быстрее.
1
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||||||
31.07.2012, 15:10 | 35 | |||||
Ну я даже не знаю, почему у вас так. Есть failsafe-вариант, но его ж признают «нечестным».
1
|
6 / 6 / 1
Регистрация: 11.04.2012
Сообщений: 44
|
|
31.07.2012, 15:13 [ТС] | 36 |
кстати вектор будет большим... может пара тысяч элементов
пишет, что не может конвертить из итератора в int
0
|
31.07.2012, 15:21 | 37 | ||||||||||
правильно пишет. исправь:
1
|
6 / 6 / 1
Регистрация: 11.04.2012
Сообщений: 44
|
|
31.07.2012, 15:29 [ТС] | 38 |
работает, но немного не так:
0 0 0 0 1 1 -1 -1 Добавлено через 7 минут novi4ok, исправил и теперь опять выдает -17891602 1 -17891602 -1
0
|
31.07.2012, 15:36 | 39 | ||||||||||
я наступил на те же грабли, о которых предупредил. замени
1
|
6 / 6 / 1
Регистрация: 11.04.2012
Сообщений: 44
|
|
31.07.2012, 15:40 [ТС] | 40 |
работает)
Всем спасибо! продублировать это только пример, вообще есть некая n, которая принимает значение от 1 до 10. Дубляж это n=2. Ну, далее надеюсь сам затащу
0
|
31.07.2012, 15:40 | |
31.07.2012, 15:40 | |
Помогаю со студенческими работами здесь
40
Vector subscript out of range Vector subscript out of range Ошибка out of range в vector Vector subscript out of range Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |