从一个Vector到另一个Vector的PushBack()元素。从原始Vector中删除

时间:2014-03-08 20:58:36

标签: c++ vector

由于This Post没有完全回答我的问题,我将开始一个新问题。

将元素从一个向量移动到另一个向量时,我遇到了一个问题。

原始矢量是一个简单的牌组,结束矢量应该代表玩家手中的牌。

我正在使用Hand.push_back(Deck.back())复制“顶部”卡片,然后使用Deck.pop_back()将其从卡片矢量中移除。

奇怪的是,虽然下次我打电话给抽奖卡功能时,它“画出”应该在上一轮被移除的同一张卡。

我猜这是调整矢量大小的问题?我应该在每个Deck.resize(Deck.size() - 1)之后尝试pop_back()吗?

void Player::DrawStartingHand(int num)
{
    for(int i = 0; i < num; i++)
    {
        Hand.push_back(Deck.back());
        Deck.pop_back();
    }
}

void Player::DrawCard()
{
    std::cout<< "Drawing next card..." << std::endl;

    if(Deck.size() >= 1)
    {
        //copy card from top of deck
        //place at front of hand
        Hand.push_back(Deck.back());

        //remove care from top of deck
        Deck.pop_back();
    }
    else
    {
        std::cout<< "No cards left to draw\n";
    }
}

编辑::上述每个功能目前只在一个地方被调用,而不是在任何极端情况下或任何奇怪的情况下。只是非常基本,简单的电话。

0 个答案:

没有答案