如何为Adjacency列表读取格式化文件?

时间:2013-07-27 13:07:57

标签: c++ format istream

我有图typedef map<int, vector<int> > AdjacencyList;

的邻接列表

现在我想从文件中填写它,如下所示:

1 234 432 654 876 ...
2 32 521 323 122  ...
3 654 4 75 652    ...
....

因此,行中的第一个元素是顶点,其余元素是相邻的顶点。 我该怎么看?

1 个答案:

答案 0 :(得分:1)

使用getline()将每行读入字符串,然后从字符串构造istringstream并从那里读取数字。像这样的东西,但有更好的错误检查。

std::ifstream file;
// open file etc.
std::string line;

AdjacencyList al;
while (!file.eof())
{
    getline(file, line);

    std::istringstream buffer(line);
    int num;
    buffer >> num;
    auto it = al.insert(std::make_pair(num, AdjacencyList::mapped_type()).first;
    while (!buffer.eof())
    {
        buffer >> num;
        it->push_back(num);
    }
}