【问题标题】:C ++ Cannot use insert to append values after a iteration on listC ++无法在列表迭代后使用插入附加值
【发布时间】:2019-10-11 03:39:45
【问题描述】:

我有以下列表,它提示用户输入学生姓名,然后提示每个学生在三门考试中获得 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;

}

【问题讨论】:

    标签: c++ list insert append


    【解决方案1】:

    查看insert 的方法std::list list insert

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

    也许您想使用push_back 方法。

    附:并且只是对未来代码的一条建议,尝试用英文编写代码。

    【讨论】:

    • 正确,虽然也有 std::list::push_back 的重载,只需要添加一个元素
    • 你是对的,已编辑,谢谢。只是我总是选择vector 而不是list ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多