Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从c+;中的文本文件快速创建图形+;_C++ - Fatal编程技术网

C++ 从c+;中的文本文件快速创建图形+;

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

我想从一个包含36692个节点的文本文件中创建一个图形,每行文本包含图形边缘的源节点和目标节点。我使用igraph库创建了图形。我写了下面的代码,但是太慢了。我怎样才能改进它

  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
是一种类型,因此不能从中调用非静态成员函数