如何申报范围?

时间:2016-09-19 22:12:58

标签: c++ algorithm data-structures scope

我正在尝试读取文本文件中有多少个数字,因为未定义总数。 我正在尝试做的是写一个while循环来读取文件,直到没有更多的元素要读取。在while循环中,cin将读入元素并将其推回到矢量数据中。但“我”并未在范围内定义。我如何在范围内声明它,或者有更好的方法吗?

void read_vector(vector<int> &data) {

    cout << "Using read function!" << endl;
    //int i = data.size();
    while (data.size() != 0){
        cin >> data[i];
        data.push_back(data[i]);
    }

} // read_function()

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

如果您不知道输入中有多少个数字,您可以使用i读取所有数字,直到您达到EOF或无效的标记(不是整数)。 所以你不需要变量int。只需创建一个临时的push_back读取输入,并vector将其读入int temp; while (cin>>temp){ data.push_back(temp); }

 List<Agent> duplicates = new HashSet<Agent>(agents.Where(c => agents.Count(x => x.ID == c.ID) > 1)).ToList();

答案 1 :(得分:0)

如果要声明并初始化名为i的变量,则执行

int i = 0;

但是,data[i]不起作用,因为矢量中还没有元素。您需要使用data.push_back()才能添加元素。由于push_back()将元素添加到列表的末尾,因此根本不需要索引变量。所以无论如何声明都是不必要的。