0
#include <iostream>
#include <list>
#include <vector>
#include <fstream>
using namespace std;
class index_table
{
public:
index_table();
void insert(string, int);
void find();
private:
class entry
{
public:
string word;
vector<int> lineNum;
};
vector<list<entry> > table;
};
index_table::index_table()
{
table.resize(128);
}
void index_table::insert(string extrWord, int extrLineNum)
{
int index = extrWord[0];
list<entry>::iterator itor = table[index].begin();
itor->word = extrWord; //why doesnt this work???
itor->lineNum.push_back(extrLineNum);
}
Я пытаюсь выяснить, почему приведенный выше код не работает. Я получаю сбой сегментный или * Glibc обнаружен * ./a.out: munmap_chunk(): недопустимый указатель: 0x0000000001e46020 ***Добавление элементов вложенных типов данных
Я создаю «стол», который представляет собой вектор или списки, является запись. Как только каждое слово и номер строки передаются в функцию вставки, его необходимо добавить в класс записи ...
Элементы (список) в таблице пуст, не так ли? – billz
Да, я думаю, это ... но я не уверен, как это исправить. Я думаю, что это что-то вроде «entry * insEntry = new entry; \t \t insEntry-> word = extrWord; \t insEntry-> lineNum.push_back (extrLineNum); 'но как добавить insEntry в вектор? –
просто используйте функцию 'push_back'. например 'table [index] .push_back (..)' – billz