C 无法在列表上的迭代后使用插入物来附加值

C ++ Cannot use insert to append values after a iteration on list

本文关键字:插入物 附加值 迭代 列表      更新时间:2023-10-16

我有以下列表,该列表提示用户编写学生名称,然后在每个学生获得的三个考试中提示3年级。如果学生在第一届考试中的成绩> 4.0,我想附加他的名字。但是,当我在步骤中这样做时 注意:候选人期望有3个参数,1提供paso_primer_exam.insert(i(;

我认为您可以在新列表中的迭代中像Python一样简单地添加值的形式。有人知道如何解决该错误吗?这是我的代码

#include <iostream>
#include <string>
#include <unordered_map>
#include <list>
using namespace std;
int main(){
// Crear un mapa que guarde los valores 
// de los estudiantes en la siguiente forma:
// "estudiante": [nota1, nota2, nota3]
unordered_map<string, list<float>> boletin;
string nombre;
float nota_1, nota_2, nota_3;

for (int i = 1; i <= 3; i ++){
    cout <<"Digite nombre del estudiante: " << i << endl;
    cin >> nombre; 
    cout <<"Digite las tres calificaciones: " << endl;
    cin >> nota_1 >> nota_2 >> nota_3;
    boletin.insert({nombre, {nota_1, nota_2, nota_3}});
}
// iterando e imprimiendo los elementos del 
// hashmap
list <string> paso_primer_exam;

for (auto i=boletin.begin(); i!= boletin.end(); i++){
    cout << 'n' + i -> first << endl;
    float primera_nota;
    list <float> notas = i -> second;
    primera_nota = notas.front();
    notas.begin();
    if (primera_nota >= 4.0){
        paso_primer_exam.insert(i);
    }
    for (auto it=notas.begin(); it != notas.end(); ++it){
        cout << ' ' << * it << endl;

    } 

}
return 0;

}

查看std::list的方法insert列表插入

没有办法只用一个参数调用。

也许您想使用push_back方法。

P.S。只是对未来代码的建议,请尝试用英语编写代码。