Как скопировать элементы вектора в стек в c ++ - PullRequest
0 голосов
/ 22 ноября 2010

Я хочу собрать стопку карт, используя специальный класс Card, который я создал сам.

Теперь я хочу сделать следующее: я хочу, чтобы карты в стопке были более простыми для последующего использования, но карты имеютбыть перетасованным, и это невозможно в стеке.

Вот код

Card dummyCard;
vector<Card> dummyVector;
initializeCards( dummyVector, dummyCard, 5 ); /* this function puts cards in vector */
random_shuffle( dummyVector.begin(), dummyVector.end() );
copy( dummyVector.begin(), dummyVector.end(), cardPile ); /* cardPile is a stack */

Есть идеи, как заставить это работать?Или мне просто оставить вектор в качестве заменителя стека?и использовать pop_back и push_back?

Ответы [ 2 ]

1 голос
/ 22 ноября 2010

Вы можете перебирать вектор и вставлять элементы один за другим

for (vector<Card>::iterator i = dummyVector.begin(); i != dummyVector.end(); i++) {
  cardPile.push(*i);
}
1 голос
/ 22 ноября 2010

Как насчет этого?

#include <stack>
#include <vector>
using namespace std;

int main()
{
    vector<int> x;
    x.push_back(10); x.push_back(20); x.push_back(30);

    stack< int,vector<int> > stack(x);

    return 0;
}
...