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

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

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

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

07.09.2011, 17:49. Просмотров 4601. Ответов 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...

19
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
07.09.2011, 20:16 #16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class bool_vector_t {
private:
   std::vector<bool> rep;
public:
   explicit bool_vector_t(const unsigned int size): rep(size) {}
   std::vector<bool>::reference operator[](const unsigned i) {
      return rep[i];
   }
};
....
    bool_vector_t bv(100);
 
    for(int i=0; i<100; i++) {
        bv[i] = (i % 2 == 0);
    }
 
    for(int i=0; i<100; i++) {
        cout << bv[i] << " ";
    }
так будет доступ
0
talis
793 / 545 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
07.09.2011, 20:25 #17
villu, а почему бы сразу не написать std::vector<bool> rep (100); без использования обёртки?
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
07.09.2011, 20:29 #18
да, уже почитал что это поправили. раньше (2004 год) vector<bool> вел себя не как вектор. Поэтому писался прокси-класс.
http://www.rsdn.ru/forum/cpp/2624630.flat.aspx как пример.
0
Den4ik
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 42
07.09.2011, 22:22  [ТС] #19
извиняюсь, инет тупил, два раза написал.

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
        vector<bool> used;
    vector<vector<Edge *>> m;
    vector<Vertex *> vertexes;
    vector<vector<Edge* >> edges;
    vector<Edge *> edgess;
    vector<Edge *> bridges;
    int timer;
    vector<int> tin, fup;
 
Bridge(ABCG<Vertex, Edge> *g)
    {
        m = g->matrix;
        timer = 0;
        Find_Bridge(g);
    };
 
    virtual void Find_Bridge (ABCG<Vertex, Edge> *g)
    {
        int n = g->v.size();
        for (int i=0; i<n; i++)
        used.push_back(false);
        for (int i=0; i<n; i++)
        {
            Vertex *ver = g->getVertex(i);
            if (!used.at(i))
                Dfs (g, ver, NULL);
        }
    };
 
    virtual void Dfs(ABCG<Vertex, Edge> *g, Vertex *v, Vertex *p)// = -1)
    {
        used.at(v->index) = true;
        timer++;
        tin.at(v->index) = fup.at(v->index) = timer;            
        for (size_t i=0; i<m.at(v->index).size(); ++i)  //      
            {
                if (m[v->index][i] == 0) continue;
                Vertex *To = m[v->index][i]->to;
                    if (To == p)  continue;     
                    if (used.at(To->index))
                        fup.at(v->index) = min (fup.at(v->index), tin.at(To->index));
                    else 
                    {
                        Dfs (g,To, v);
                        fup.at(v->index) = min (fup.at(v->index), fup.at(To->index));
                        if (fup.at(To->index) > tin.at(v->index))
                            IS_BRIDGE(v,To);
                    }
            }
    };
теперь вот ошибка с памятью, после строки где timer присваивается итым элементам массивов.
C++
1
tin.at(v->index) = fup.at(v->index) = timer;
Добавлено через 1 час 16 минут
вот такая:
Unhandled exception at 0x754a9617 in MyNewExcGraph.exe: Microsoft C++ exception: std::out_of_range at memory location 0x0020f214..

в vector в строках:
C++
1
2
3
4
static void _Xran()
        {   // report an out_of_range error
        _THROW(out_of_range, "invalid vector<T> subscript"); // <==
        }
вообще не пойму что не так с вектором

Добавлено через 16 секунд
вот такая:
Unhandled exception at 0x754a9617 in MyNewExcGraph.exe: Microsoft C++ exception: std::out_of_range at memory location 0x0020f214..

в vector в строках:
C++
1
2
3
4
static void _Xran()
        {   // report an out_of_range error
        _THROW(out_of_range, "invalid vector<T> subscript"); // <==
        }
вообще не пойму что не так с вектором

Добавлено через 1 минуту
при этом с булевским вектором сейчас все норм

Добавлено через 16 секунд
при этом с булевским вектором сейчас все норм

Добавлено через 19 минут
все, понял ошибку, о чем мне до этого рассказывали
0
Krock21rus
74 / 74 / 19
Регистрация: 18.11.2013
Сообщений: 373
Завершенные тесты: 2
21.02.2015, 18:16 #20
Цитата Сообщение от villu Посмотреть сообщение
нельзя вектор из bool объявлять. лучше объявить как int
согласен, в vector<bool> содержится проблема, где-то я читал что по идее должно выделятся по биту на элемент, но это не реализовано в vector, поэтому он выделяет и возвращает как на int из-за какой-то функции
0
21.02.2015, 18:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2015, 18:16
Привет! Вот еще темы с ответами:

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,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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