无法打印存储在vector C ++中的struct内容

时间:2015-02-20 14:31:24

标签: c++

大家好,我有一个学生记录数组,这是一个按类型结构的问题。在我将每个记录存储在向量中时,我随机为每个学生分配了数字。之后我想用标记对它进行排序。问题是迭代器不会打印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;
}

1 个答案:

答案 0 :(得分:2)

由于Operator Precedence

的问题,您的代码无效
  

解析表达式时,在某行上列出的运算符   将被束缚得更紧(就像用括号一样)到它的论点而不是任何   在其下方的行上列出的运算符。

可以找到列出优先级的表here

使用以下内容更改打印行:

cout<<RecVectorItr->Marks<<endl;