我在使用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;
}
}
答案 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;
}
}