c++ - 在 C++ 中从 vector 中删除元素

标签 c++

我正在编写一个基于足球队花名册的程序。每个球员都有 Jersey 号码和等级。如果用户输入所述球员的 Jersey 号码,我想弄清楚如何删除球员的评分和 Jersey 号码。我定义了两个 int vector ,一个用于球员 Jersey 号码,另一个用于球员评分。到目前为止,这就是我的删除播放器功能。不确定我做错了什么。

void delete_player()
    {
        int input;
        int vecSize = jersey.size();
        cout << "Enter a jersey number to delete: ";
        cin >> input;
        for (int i = 0; i < vecSize; i++)
        {
            if (input == jersey[i])
            {
                jersey.erase(jersey.begin() + i);
                rating.erase(rating.begin() + i);
            }

        }
    }

最佳答案

您似乎使用了错误的工具来完成这项工作。看来您需要的是 std::map<jerseyNum, rating> .像这样:

 using jerseyNum = int;
 using rating = int;
 using playerMap = std::map<jerseyNum, rating>;
 playerMap Players;

然后你可以通过做这样的事情来添加玩家:

Players [ newJerseyNum ] = newRating;

您可以通过执行以下操作删除玩家:

auto foundPlayer = Players.find(jerseyToDelete);
if (foundPlayer != Players.end())
{
     Players.erase(foundPlayer);
}

关于c++ - 在 C++ 中从 vector 中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53644423/

相关文章:

c++ - 作为函数参数的模板结构

c++ - 将正则表达式模式定义为无符号字符

c++ - OpenGL混合: texture on top overlaps its pixels which should be transparent (alpha = 0)

c++ - gdb 退出并显示 : Program received signal SIGILL, 对使用 gcc/intel_mkl/gfortran -mavx 编译的 c c++ 程序的非法指令

c++ - 使用 Sprite 时纹理变形 (Directx 9)

c++ - 如何使用 rand_r 以及如何以线程安全的方式使用它?

c++ - GetSystemTimes() 的问题

c++ - 为什么 ("Maya"== "Maya") 在 C++ 中不是真的?

c++ - 这个简单的代码应该可以工作,但是我正在警告

c++ - Lambda 返回空字符串