Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c+中搜索地图的元素+;_C++_Stl_Maps_Composition - Fatal编程技术网

C++ 在c+中搜索地图的元素+;

C++ 在c+中搜索地图的元素+;,c++,stl,maps,composition,C++,Stl,Maps,Composition,问题如下:创建2个班级,学生、科目,并将其数据成员作为地图输入,并使用Composition将其互连。代码如下: #include <iostream> #include <string> #include <map> using namespace std; class student { public: map<int, string> student_map; student() { studen

问题如下:创建2个班级,学生、科目,并将其数据成员作为地图输入,并使用Composition将其互连。代码如下:

#include <iostream>
#include <string>
#include <map>

using namespace std;

class student {
public:
    map<int, string> student_map;

    student()
    {
        student_map[100] = "  Noel Philip";
        student_map[101] = "  John";
        student_map[102] = "  Jerry";
        student_map[103] = "  James";
    }

    void display_details_Engineering()
    {
        for (map<int, string>::iterator itr = student_map.begin(); ((itr->first) == 100) || ((itr->first) == 101); ++itr) {
            cout << "ROll NO" << itr->first << "  Name" << itr->second << endl;
        }
    }

    void display_details_Medicine()

    {
        for (map<int, string>::iterator itr = student_map.begin(); ((itr->first) == 102) || ((itr->first) == 103); ++itr) {
            cout << "ROll NO" << itr->first << "  Name" << itr->second << endl;
        }
    }

    void display_alldetails()
    {
        for (map<int, string>::iterator itr = student_map.begin(); itr != student_map.end(); ++itr) {
            cout << "ROll NO" << itr->first << "  Name" << itr->second << endl;
        }
    }

    ~student(){};
};

class subjects {

public:
    map<string, int> eng_subjects;

    map<string, int> medicine_subjects;

    subjects()
    {
        eng_subjects["  Engineering Physics"] = 90;
        eng_subjects["  Engineering Chemistry"] = 80;
        medicine_subjects["  Zoology"] = 90;
        medicine_subjects["  Humanology"] = 80;
    }

    void display_details_Engineering()
    {
        for (map<string, int>::iterator itr = eng_subjects.begin(); itr != eng_subjects.end(); ++itr) {
            cout << "Subject Name" << itr->first << "  Grades" << itr->second << endl;
        }
        s1.display_details_Engineering();
    }

    void display_details_Medicine()
    {
        for (map<string, int>::iterator itr = medicine_subjects.begin(); itr != medicine_subjects.end(); ++itr) {
            cout << "Subject Name" << itr->first << "  Grades" << itr->second << endl;
        }
        s1.display_details_Medicine();
    }
    ~subjects(){};

    //  void display_details_Engineering()      Not Required
    //{
    //s1.display_details_Engineering();
    //}
private:
    student s1;
};

int main()
{
    student s;

    s.display_alldetails();
    s.display_details_Engineering();
    s.display_details_Medicine();

    subjects sub;
    sub.display_details_Engineering();
    sub.display_details_Medicine();
}
#包括
#包括
#包括
使用名称空间std;
班级学生{
公众:
学生地图;
学生()
{
学生地图[100]=“Noel Philip”;
学生地图[101]=“约翰”;
学生地图[102]=“Jerry”;
学生地图[103]=“詹姆斯”;
}
无效显示\u详细信息\u工程()
{
对于(map::iterator itr=student_map.begin();((itr->first)==100)| |((itr->first)==101);++itr){

cout我没有仔细看,但在“for”循环中,中间表达式不是过滤器,如果它的计算结果不是布尔值true,则for循环停止。因此在“display_details_Medicine()”中,只要itr->first不等于102或103,循环就结束


在方法体中进行比较。或者更好的做法是,为每个集合创建一个值数组并遍历每个集合,这比读取映射的每个成员并只选择所需的成员要高效得多。

@rabinh是正确的。对于
显示详细信息\u Engineering()
显示详细信息\u Medicine()
,检查循环内的状况。

下面的代码应该正常工作

void display_details_Engineering()
{
    for (map<int, string>::iterator itr = student_map.begin(); itr != student_map.end(); ++itr) {
        if (itr->first == 100 || itr->first == 101)
            cout << "ROll NO" << itr->first << "  Name" << itr->second << endl;
    }
}

void display_details_Medicine()

{
    for (map<int, string>::iterator itr = student_map.begin(); itr != student_map.end(); ++itr) {
        if (itr->first == 102 || itr->first == 103)
            cout << "ROll NO" << itr->first << "  Name" << itr->second << endl;
    }
}
void display\u details\u Engineering()
{
对于(map::iterator itr=student_map.begin();itr!=student_map.end();++itr){
如果(itr->first==100 | itr->first==101)

问题如下:…这不是一个问题,而是一个任务。你得到的输出有什么问题吗?也许与它应该是什么有所不同,但我无法发现问题所在difference@tobi303required有额外的linesTry在代码中单步执行,可能使用较小的输入,并尝试找出您认为可能错误的行:-)@tobi303 Rookie在这里.请原谅。