0
    int n = 1; 

    //Lines 14 to (vertices+13) read
    while (i<(vertices+14))
    {
        //First three numbers on each line put into "v1"
        if (n < 4)
        {
            copy(istream_iterator<float>(input), 
            istream_iterator<float>(), 
            back_inserter(v1));

            n++;
        }

        //Last three numbers on each line put into "v2"
        else
        {
            copy(istream_iterator<float>(input), 
            istream_iterator<float>(), 
            back_inserter(v2));
            n++;

            if (n > 6)
            {
                i++;    
                n=1;    
            }
        }

这应该将一行上的前三个数字排序到一个向量中,将后三个数字排序到另一个向量中。然而,由于我怀疑流工作的性质,所有数字都进入向量 v1,没有一个进入 v2。输入是一个 ifstream。

4

1 回答 1

2

问题在于如何std::copy工作。

第二个参数标记停止复制的位置,以及您的参数

istream_iterator<float>()

表示“流的结束”。第一个调用copy是读取整个流。

改用std::copy_n复制一定数量。

来自评论:

还有没有办法使用copy的第二个参数来获取三个数字?

这正是它的用途。对于某个数字n,如果要复制n值,请使用std::copy_n.

于 2013-04-04T18:14:45.483 回答