如何正确显示矢量?

时间:2014-02-23 16:57:26

标签: c++ eclipse function vector

我在使用C ++显示向量时遇到了一些问题。

现在这样打印:
Spiller navn:A
得分:1

Spiller navn:A
得分:2

Spiller navn:A
得分:3

Spiller navn:B
得分:1

Spiller navn:B
得分:2
...
...等等。

但是我希望它只打印一次“Spiller”,并且多次打印“得分”,所以它看起来像这样:

Spiller navn:A
得分:
  1
  2
  3

Spiller navn:B
得分:
1
2
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;
}
 }

1 个答案:

答案 0 :(得分:0)

由于你没有说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;
   }
}