【发布时间】:2016-07-27 14:29:21
【问题描述】:
我有一个学生对象的 c++ 向量,每个对象都有一个 ID(字符串)、名称(字符串)和年龄(整数)。
std::vector<student> myVector;
假设矢量看起来像这样
[{“1”,“汤姆”,12},{“2”,“大卫”,10},{“3”,“亚当”,15},{“4”,“吉尔”,20 }]
有什么方法可以使用学生姓名删除向量中的对象,例如:
myVector.deleteObjectWithName(David)
这样我的剩余向量现在是
[{"1", "汤姆", 12}, {"3", "亚当", 15}, {"4", "吉尔", 20}]
【问题讨论】:
-
std::remove_if是你所需要的 -
这不是您标记的同一个问题:询问价值,而这需要
remove_if -
当然,正如您提出的问题,
std::remove_if是@DimChtz 指出的答案。但我可以想象,通常你想通过 ID 查找学生,在这种情况下,std::map可能是更有用的数据结构。 (另外,为什么学生 ID 是一个字符串?) {edit} nvm,看到你想按名称而不是 ID 删除。不过,一般性的评论可能仍然有用。 -
我已经编辑了这个问题。我想按名称删除。学生 ID 是一个字符串,因为我不打算对其进行任何算术运算
-
但如果它是一个唯一的数字,将其设为数字数据类型仍然有一些优势,例如您可以快速将其与其他 ID 进行比较,并可以安全地将其用作 @987654327 的键@。同意副本不是重复的事实。