Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.74
Den4ik
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 42
#1

Проблема с vector - C++

07.09.2011, 17:49. Просмотров 4331. Ответов 19
Метки нет (Все метки)

Объявляю булевый вектор
C++
1
vector<bool> used;
затем заполняю его false'ами
C++
1
2
for (int i=0; i<n; i++)
        used[i] = false;
выходит ошибка при компиляции:

Debug Assertion Failed!
...\vector
Line: 1501

Expression: vector <bool> iterator not dereferencable

..............
и еще одна

Expression: ("Standart C++ Libraries Out of Range" 0)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2011, 17:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблема с vector (C++):

Проблема с <vector> - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;vector&gt; using namespace std; void smb_in(); int main() { ...

Проблема с vector - C++
Здравствуйте! Есть класс BucketSort: #ifndef BUCKETSORT_H #define BUCKETSORT_H #include &lt;vector&gt; class BucketSort { ...

Проблема с итератором в <vector> - C++
Всем привет. Помогите пожалуйста решить проблему: У меня существует класс class Book { string author,title,publishing; int...

error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main - C++
//Vector.h #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;climits&gt; #include &lt;vector&gt; #include &lt;stdlib.h&gt; #include &lt;fstream&gt;...

Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>) - C++
Написал программу, которая создает вектор 'а' векторов 'b', вектора 'b' содержат 2 числа. Стало интересно, как нужно изменить программу...

Ошибка [Linker error] undefined reference to `Vector::Vector(int)' - C++
Добрый день. Делал по методички, и почему-то валятся ошибки... файл lab9_main.cpp #include &lt;iostream&gt; #include &quot;Vector.h&quot; int...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
07.09.2011, 17:50 #2
Если в массив ничего не добавляли, то обращение к несуществующим элементам.
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
07.09.2011, 17:55 #3
C++
1
2
3
vector<bool> used;
for (int i=0; i<n; i++)
                used.push_back(false);
1
Den4ik
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 42
07.09.2011, 18:05  [ТС] #4
Извините за глупый вопрос(это ж vector), давно просто уже парюсь сижу. Можете сразу напомнить какой функцией достать итый элемент? used.at(i)???
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
07.09.2011, 18:07 #5
Цитата Сообщение от Den4ik Посмотреть сообщение
Извините за глупый вопрос(это ж vector), давно просто уже парюсь сижу. Можете сразу напомнить какой функцией достать итый элемент? used.at(i)???
Если этот элемент уже существует, то можно просто индексацией (а можно и at, различие в том, что at выбрасывает исключение в случае не валидного индекса).
0
Den4ik
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 42
07.09.2011, 18:26  [ТС] #6
Еще вопрос. Как итому элементу присвоить значение?
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
07.09.2011, 18:42 #7
Den4ik, так же, через индексацию или at.
0
Den4ik
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 42
07.09.2011, 18:59  [ТС] #8
Пробовал, но ошибка подобная выходит.
на строке
C++
1
used.at(v->index) = true;
0
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
07.09.2011, 19:10 #9
Den4ik, скажите, если у вас массив из четырёх элементов, как присвоить значение сто девятому?
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
07.09.2011, 19:41 #10
Den4ik,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <vector>
 
int main()
{
    std::vector<bool> v;
    const int n = 11;
    int i;
 
    for (i = 0; i < n; i++)
        v.push_back(false);
 
    v[2] = true;
    for (i = 0; i < n; i++)
        std::cout << v[i] << ' ';
    std::cout << std::endl;
 
    v.at(3) = true;
    for (i = 0; i < n; i++)
        std::cout << v.at(i) << ' ';
    std::cout << std::endl;
 
    return 0;
}
0
Den4ik
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 42
07.09.2011, 19:55  [ТС] #11
talis,
v->index не может быть больше n.
0
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
07.09.2011, 19:57 #12
Den4ik, а вы сказали вектору, что в нём содержится n элементов?
0
Den4ik
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 42
07.09.2011, 20:00  [ТС] #13
talis,
v->index не может быть больше n.
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
07.09.2011, 20:03 #14
нельзя вектор из bool объявлять. лучше объявить как int
0
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
07.09.2011, 20:05 #15
Den4ik, не надо мне два раза повторять. Если вы объявили вектор так:

C++
1
vector<bool> used;
То он не знает, что в нём должно быть место под n элементов. В нём места хватит на 0 (ноль) элементов, и как вы не пытайтесь, а элемент номер v->index вы в этот промежуток не втиснете. Смотрите:

C++
1
2
vector<bool> used;
cout << "Vector size = " << used.size() << '\n';
Цитата Сообщение от villu Посмотреть сообщение
нельзя вектор из bool объявлять. лучше объявить как int
villu, можно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2011, 20:05
Привет! Вот еще темы с ответами:

vector<Struct2{int,vector<struct1>}> или множественное наследование ... - C++
Здравствуйте! Помогите, пожалуйста. Есть такие данные: typedef struct { int x; int y; // координаты...

Как корректно скопировать vector в vector внутри класса - C++
Есть класс принимающий в конструкторе vector: class test { test(std::vector&lt;std::string&gt; codeList); ~test(); ...

Указатель на объект вектор в векторе vector < vector<int>* >* - C++
Дело касается вот чего, есть такая вот незатейлевая вещь. #include &lt;vector&gt; #include &lt;iostream&gt; int main( ) { using...

Записать числа из файла в двумерный массив или вектор вроде такого vector<vector<int>> - C++
Добрый день, подскажите пожалуйста как лучше и проще считывать файл. в файле записаны числа, разделенные пробелами и запятыми: 1, 2, 3,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.09.2011, 20:05
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru