C++ 在c+中搜索地图的元素+;
问题如下:创建2个班级,学生、科目,并将其数据成员作为地图输入,并使用Composition将其互连。代码如下: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
#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在这里.请原谅。