如何正确显示矢量

How can I display vector correct?

本文关键字:显示 何正确      更新时间:2023-10-16

我在C++中正确显示向量时遇到了一点问题。

它现在打印如下:
溢出器导航:A
成绩: 1

溢出器导航:A
成绩: 2

溢出器导航:A
成绩: 3

溢出器导航:B
成绩: 1

溢出器导航:B
成绩: 2
...
...等等。

但是我希望它只打印一次"溢出器",多次打印"分数",所以它看起来像这样:

溢出器导航:A
得分:

1 阿拉伯数字
3

溢出器导航:B
得分:

1阿拉伯数字
3

这是我的填充向量函数:

    void fyldVector(vector<Beregning>& nySpiller) {
string navn;
int score;

cout << "Indtast antal spillere: ";
int antal;
cin >> antal;
//nySpiller.reserve( nySpiller.size() + antal );
for (int i = 0; i < antal; i++) {
    cout << "Indtast spiller navn: ";
    cin >> navn;
    for (int j = 0; j < 3; j++) {
        cout << "Indtast score: ";
        cin >> score;
        Beregning nyBeregning(navn, score);
        nySpiller.push_back(nyBeregning);
    }
}
cout << endl;
}

还有我的打印矢量函数:

    void printVector(const vector<Beregning>& nySpiller) {
unsigned int size = nySpiller.size();
cout << nySpiller.size() << endl;
for (unsigned int i = 0; i < size; i++ ) {
    cout << "Spiller navn: " << nySpiller[i].getNavn() << endl;
    cout << "Score: " << nySpiller[i].getScore() << endl;
    cout << endl;
}
 }

由于您没有说函数 getScore 是什么以及它的返回类型是什么,所以我使用您的示例中使用的函数。

void printVector( const vector<Beregning> &nySpiller ) 
{
   string navn;
   for ( const Beregning &b : nySpiller )
   {
      if ( navn != b.getNavn() )
      {
         navn = b.getNavn();
         cout << "nSpiller navn: " << navn << endl;
         cout << "Score: " << endl;
      }   
      cout << b.getScore() << endl;
   }
}

如果您的编译器不支持基于范围的 for 循环,那么您可以编写

void printVector( const vector<Beregning> &nySpiller ) 
{
   string navn;
   for ( vector<Beregning>::size_type i = 0; i < nySpiller.size(); i++ )
   {
      if ( navn != nySpiller[i].getNavn() )
      {
         navn = nySpiller[i].getNavn();
         cout << "nSpiller navn: " << navn << endl;
         cout << "Score: " << endl;
      }   
      cout << nySpiller[i].getScore() << endl;
   }
}