这太愚蠢了.我一直被困在一个小时内试图读取一个由单个空格分隔的.txt文件.while循环只能由于某种原因执行一次!
#include <iostream>
#include <string>
#include <fstream>
#include <stack>
using namespace std;
int main(int argc, char* argv[])
{
string line;
string str(argv[1]);
ifstream myfile((str).c_str());
int num;
stack<int> x;
while (myfile >> num);
{
x.push(num);
}
return(0);
}
Run Code Online (Sandbox Code Playgroud) 我必须循环遍历大型数组中的元素子集,其中每个元素指向另一个元素(来自大图中连接组件的检测的问题).
我的算法如下:1.考虑第一个元素2.将下一个元素视为前一个元素指向的元素.3.循环直到没有发现新元素4.考虑1-3中未考虑的下一个元素,返回1.注意要考虑的元素数量远小于元素总数.
对于我现在看到的,我可以:
//create a map of all element, init all values to 0, set to 1 when consider
map<int,int> is_set; // is_set.size() will be equal to N
Run Code Online (Sandbox Code Playgroud)
要么
//create a (too) large array (total size), init to 0 the elements to consider
int* is_set = (int*)malloc(total_size * sizeof(int)); // is_set length will be total_size>>N
Run Code Online (Sandbox Code Playgroud)
我知道访问映射中的键是O(log N),而它只是数组的常量,但我不知道malloc在创建时是否成本更高,同时还需要更多内存?