gpt4 book ai didi

c++ - 从 map vector 中删除元素

转载 作者:行者123 更新时间:2023-11-28 01:09:01 25 4
gpt4 key购买 nike

我有一个 map vector :

typedef map<string, string> aMap;
typedef vector<aMap> rVec;
rVec rows;

如何从行中删除一些元素?

以下代码无效。

struct remove_it
{
bool operator() (rVec& rows)
{
// Validation code here!

}
};

rVec::iterator it = remove(rows.begin(), rows.end(), remove_it());
rows.erase(it, rows.end());

我收到以下错误。

error: no matching function for call to 'remove(std::vector<s
td::map<std::basic_string<char>, std::basic_string<char> > >::iterator, std::vec
tor<std::map<std::basic_string<char>, std::basic_string<char> > >::iterator, mai
n(int, char**)::remove_it)'

谢谢。

最佳答案

1) 首先:请提供一个可编译的例子。
您上面发布的代码有问题,因为 rVec 和 rowsVector 已互换(如果您发布了真实代码,您自己就会看到)。

2) 您使用了错误的删除。应该是remove_if

3) 仿函数为const是正常的

4) operator() 应该获取类型为 aMap 的对象(因为它在您的 vector 中)而不是对 vector 的引用。

5) 不要偷懒在标准命名空间中的对象前面添加 std::。
而不是使用 using namespace std;

#include <map>
#include <vector>
#include <string>
#include <algorithm>

typedef std::map<std::string, std::string> aMap;
typedef std::vector<aMap> rVec;

rVec rows;

struct remove_it
{
// Corrected type here
bool operator() (aMap const& row) const // const here
{
// Validation code here!
return true;
}
};

int main()
{
// _if herer
rVec::iterator it = std::remove_if(rows.begin(), rows.end(), remove_it());
rows.erase(it, rows.end());
}

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com