我正在努力从一个向量中删除一个自定义类型。我有以下代码:
#include "pch.h"
#include <iostream>
#include <vector>
class Account {
public:
std::string name;
int balance;
};
int main()
{
std::vector<Account> holding_vector;
Account new_acc1;
Account new_acc2;
Account new_acc3;
holding_vector.push_back(new_acc1);
holding_vector.push_back(new_acc2);
holding_vector.push_back(new_acc3);
}
我该如何删除new_acc2
呢?唯一能想到的实际想法是尝试并覆盖类的一个运算符,以便find()
算法可以在矢量中定位对象。
发布于 2019-04-01 06:32:30
使用std::find_if
查找与给定条件匹配的元素。然后使用vector::erase
删除该元素。
标准是什么取决于您的需求,这很难通过发布的代码来猜测。
例如,如果您想要删除具有某个名称的帐户,您可以通过这种方式找到它们;
auto it = std::find_if(std::begin(holding_vector), std::end(holding_vector), [](Account const& acc) { return acc.name == "some_account_name"; });
如果多个项目可以匹配相同的条件,并且您想要将它们全部删除(而不仅仅是第一个),那么我建议使用erase-remove成语。stackoverflow上已经有answers可以帮助你做到这一点。
https://stackoverflow.com/questions/55446018
复制相似问题