C++ 从c+;中的文本文件快速创建图形+;
我想从一个包含36692个节点的文本文件中创建一个图形,每行文本包含图形边缘的源节点和目标节点。我使用igraph库创建了图形。我写了下面的代码,但是太慢了。我怎样才能改进它C++ 从c+;中的文本文件快速创建图形+;,c++,C++,我想从一个包含36692个节点的文本文件中创建一个图形,每行文本包含图形边缘的源节点和目标节点。我使用igraph库创建了图形。我写了下面的代码,但是太慢了。我怎样才能改进它 igraph_empty(&graph, 36692, 0); ifstream inputFile("Email-Enron.txt"); string line; while (getline(inputFile, line)) { istringstream ss(lin
igraph_empty(&graph, 36692, 0);
ifstream inputFile("Email-Enron.txt");
string line;
while (getline(inputFile, line))
{
istringstream ss(line);
int v1, v2;
ss >> v1 >> v2 ;
igraph_add_edge(&graph, v1, v2);
}
如果文件读取是瓶颈(您实际上应该对此进行分析),我建议去掉多余的
stringstream
变量
如果每一行只包含两个数字而没有其他内容,那么直接从流中成对读取数字也可以,因为操作符>
将新行视为空白,并以忽略空白的方式忽略它:
igraph_empty(&graph, 36692, 0);
ifstream inputFile("Email-Enron.txt");
int v1, v2;
while ( (inputFile >> v1 >> v2) ) {
igraph_add_edge(&graph, v1, v2);
}
如果文件仅包含(2*36692)个数字,则最好使用1次读取操作将整个文件读入内存缓冲区。谢谢。但是,为什么它会给出错误:“预期a’”?使用
ifstream
而不是inputFile
;请参阅更正的答案。@mary,因为它实际上应该是:inputFile>>v1>>v2
ifstream
是一种类型,因此不能从中调用非静态成员函数