Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ошибка памяти !!

64K
20 марта 2011 года
cherish dkfefbie c
8 / / 19.03.2011
Код:
#include <QtCore/QCoreApplication>

#include <iostream>
#include <vector>
#include "IO.cpp"
#include "struct.cpp"


int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);

    GRAPH G;

    IO<GRAPH>::scan(G);

    return 1;
}






Код:
//#include "struct.h"
#include <vector>
#include <iostream.h>

class GRAPH {



    std::vector < std::vector <int> > War; //

public:

    void EdgeCreate (int v, int w , int We)
    {

        War[v][w]=We;
        cout<<endl<<"creating done!" <<v <<"  -  "<<w<<"  "<<We<<endl;

    }

   };






Код:
//#include "IO.h"
#include <vector>
#include <iostream.h>
template <class GRAPH>

class IO {

    public:

     static void IO<GRAPH>::scan( GRAPH &G)
     {
        int N,CONvert,EWeight,i;
        cout << "type in number of verts"<< endl;
        cin>>N;
        for (i=1; i<N ; i++)
        {
            while(1)
            {
                cout << "Assign vert."<<i<<endl;
                cout << "connect to vert... (0 to finish)"<<endl;
                cin>>CONvert;
                if (CONvert==0)
                    break;
                cout<< "Assign weight of edge"<<i<<"-"<<CONvert<<endl;
                cin>>EWeight;
                cout<<"reded"<<endl;
                G.EdgeCreate (i,CONvert,EWeight);
                cout<<" Edge "<<i<<"-"<<CONvert<<" created."<<endl;
             }
        }
    }
};



при вызове функции G.EdgeCreate(int, int, int) возникает ошибка памяти
инструкция по адресу такому то обратилась туда то....

функция осуществляет заполение данными таблицы War - в алемент War[w][v] заносится переменная We . Вот здесь как мне кажется и имеет место ошибка, но почему?

среда QTcreator
64K
20 марта 2011 года
cherish dkfefbie c
8 / / 19.03.2011
1ый код - main.cpp

2ой - struct.cpp

3bq - IO.cpp
278
20 марта 2011 года
Alexander92
1.1K / / 04.08.2008
Вы не вызываете resize() для GRAPH::War. Соответственно, под него не выделяется нужная память. Приведу возможный пример правильного заполнения вектора размерами 3 x 5, к примеру:

 
Код:
using namespace std;

vector<vector<int> > War;
War.resize(3);
for (int i = 0; i < 3; i++) {
 War.resize(5):
 for (int j = 0; j < 5; j++)
   War[j] = i + j;
}
64K
20 марта 2011 года
cherish dkfefbie c
8 / / 19.03.2011
Спасибо большое!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог