拆分后的空矢量

时间:2016-09-27 14:25:59

标签: c++ vector

我正在尝试编写一个基于卡片技巧的简单应用程序。在该应用程序的某些部分,我必须交替拆分主甲板到较小的甲板。我写了一个简单的循环来做到这一点,但在调用甲板后仍然是空的。我粘贴下面的代码部分。你知道我弄错了吗?当然,如果你想检查整个程序,你可以做here。该方法由Deck类的“main”实例调用,较小的deck是该方法的参数。

    void split_deck(Deck one, Deck two, Deck three, Deck four, int time)
{
    Deck* on=&one;
    Deck* tw=&two;
    Deck* th=&three;
    Deck* fo=&four;
    on->dck.clear();
    tw->dck.clear();
    th->dck.clear();
    fo->dck.clear();
    int buff;

    for (int i = 0; i < 24; i++)
    {
        buff = dck[i];
        if (i%time == 0) on->dck.push_back(buff);
        if (i%time == 1) tw->dck.push_back(buff);
        if (i%time == 2) th->dck.push_back(buff);
        if (i%time == 3) fo->dck.push_back(buff);
    }
}

1 个答案:

答案 0 :(得分:2)

要扩展Nathan的评论,你应该通过引用传递向量:

 void split_deck(Deck& one, Deck& two, Deck& three, Deck& four, int time)

这样,更改将被保留并对调用者可见。 现在传递向量的方式(按值),你基本上在函数内部处理它们的副本;函数外的实际向量不会改变。

而且,是的,请摆脱那些指针(我假设他们还在那里进行测试)并使用你直接传递给函数的矢量。