繁体   English   中英

C ++无法使用insert在列表上进行迭代后附加值

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

我有以下列表,提示用户写一个学生姓名,然后在每个学生获得的三个考试中提示3个等级。 如果第一次考试的成绩大于4.0,我想附上学生的姓名。 但是,当我在步骤paso_primer_exam.insert(i)中执行此操作时,我收到了错误注释:候选者需要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;

}

再看方法insertstd::list 列表中插入

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

也许你想使用push_back方法。

PS只是对未来代码的建议,尝试用英语编写代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM