大家好,我有一个学生记录数组,这是一个按类型结构的问题。在我将每个记录存储在向量中时,我随机为每个学生分配了数字。之后我想用标记对它进行排序。问题是迭代器不会打印vector的内容。我认为问题出在声明cout<<*RecVectorItr.Marks<<endl;
,但我无法弄清楚原因。你能指出什么是错的吗?先感谢您。这是代码
include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Record
{
int RollNum;
char Name[20];
float Marks;
char Status[10];
};
bool compFunc (struct Record Rec1, struct Record Rec2)
{
return (Rec1.Marks<Rec2.Marks);
}
int main ()
{
struct Record Students[20];
float MarksArray[20]={30.4, 20.1, 11.9, 50.0, 55, 100, 11, 34, 90, 12, 13, 14, 19, 22.4, 88 , 56, 22, 78, 98, 29};
vector<Record> RecVector;
for (int i=1;i<21;i++)
{
Students[i].Marks=MarksArray[i];
RecVector.push_back (Students[i]);
}
sort (RecVector.begin (), RecVector.end (), compFunc);
for (vector<Record>::iterator RecVectorItr=RecVector.begin (); RecVectorItr!=RecVector.end ();RecVectorItr++)
cout<<*RecVectorItr.Marks<<endl;
return 0;
}
答案 0 :(得分:2)
解析表达式时,在某行上列出的运算符 将被束缚得更紧(就像用括号一样)到它的论点而不是任何 在其下方的行上列出的运算符。
可以找到列出优先级的表here
使用以下内容更改打印行:
cout<<RecVectorItr->Marks<<endl;