访问迭代器的众多元素

时间:2013-08-17 12:41:03

标签: c++

这可能会相当简单,但解决方案目前正在逃避我。这是该计划的简要说明。

程序显示并允许用户随机洗牌,然后以洗牌的形式再次在用户输入上显示它们。目前我的输出只有一行,直到它强迫自己从超过窗口大小开始换行。

我需要做的是创建4个单独的13行卡,我在伪代码中的方式是:

if(deck[12])
   cout << endl;

但是我无法访问迭代器的元素,因此它可以在显示13张卡后结束行。这是我的for循环显示卡片:

for (vector<const string*>::const_iterator it=deck.begin(); it!= deck.end(); ++it)
            {
                cout << (*it)->c_str() << ' ';
            }

3 个答案:

答案 0 :(得分:2)

单独一个柜台怎么样?

int n = 0;
for (vector<const string*>::const_iterator it=deck.begin(); it!= deck.end(); ++it)
{
    cout << (*it)->c_str() << ' ';
    if (++n == 13)
    {
        n = 0;
        cout << '\n';
    }
}

答案 1 :(得分:2)

你可以这样做 -

 if ((it - deck.begin()) % 13 == 0)
 {
     std::cout << "\n";
 }

答案 2 :(得分:0)

你有52张牌,想要用4行13张牌展示它们。这很简单:

for(int line = 0; i&lt; 4; ++ i){     for(int card = 0; card&lt; 13; ++ card)         std :: cout&lt;&lt; *它++);     std :: cout&lt;&lt; '\ n';     }

其中it被初始化为指向牌组中的第一张牌。请注意,代码假定存储在卡座中的对象可以直接插入到ostream中。将const string*更改为string;你会发现你的生活更简单。