我有图的邻接表typedef map<int, vector<int> > AdjacencyList;
现在我想从如下所示的文件中填充它:
1 234 432 654 876 ...
2 32 521 323 122 ...
3 654 4 75 652 ...
....
所以一行中的第一个元素是顶点,其余元素是相邻的顶点。我该如何阅读?
用于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);
}
}