访问迭代器的许多元素

Accessing numerous elements of an iterator

本文关键字:元素 许多 迭代器 访问      更新时间:2023-10-16

这可能会很简单,但解决方案目前还没有解决。

该程序显示并允许用户洗牌,然后在用户输入时以洗牌的形式再次显示。目前,我的输出是单行的,直到它迫使自己在超过窗口大小的情况下制作新行。

我需要做的是创建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() << ' ';
            }

一个单独的计数器怎么样?

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';
    }
}

你可以做这样的事情-

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

您有52张牌,并且希望将它们显示为4行,每行13张牌。这很简单:

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

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