相关疑难解决方法(0)

在地图元素上使用for_each

我有一个地图,我想在每个数据类型对象成员函数上执行调用.我还知道如何在任何序列上执行此操作但是,是否可以在关联容器上执行此操作?

我能找到的最接近的答案是:Boost.Bind访问std :: for_each中的std :: map元素.但是我不能在我的项目中使用boost,那么是否有一个STL替代品,我缺少boost :: bind?

如果不可能,我想创建一个指向数据对象的指针的临时序列,然后在其上调用for_each,如下所示:

class MyClass
{
public:
 void Method() const;
}

std::map<int, MyClass> Map;
//...

std::vector<MyClass*> Vector;
std::transform(Map.begin(), Map.end(), std::back_inserter(Vector), std::mem_fun_ref(&std::map<int, MyClass>::value_type::second));
std::for_each(Vector.begin(), Vector.end(), std::mem_fun(&MyClass::Method));
Run Code Online (Sandbox Code Playgroud)

它看起来太混淆了,我真的不喜欢它.有什么建议?

c++ algorithm stl stdmap std-pair

41
推荐指数
4
解决办法
11万
查看次数

如何将BOOST_FOREACH与boost :: ptr_map一起使用?

如何使用boost :: ptr_map有效地使用BOOST_FOREACH(字符数/可读性)?

Kristo在他的回答中证明了可以将BOOST_FOREACH与ptr_map一起使用,但它并没有真正省去任何输入(或使我的代码真的更具可读性),而不是使用迭代器迭代ptr_map:

typedef boost::ptr_container_detail::ref_pair<int, int* const> IntPair;
BOOST_FOREACH(IntPair p, mymap) {
    int i = p.first;
}

// vs.

boost::ptr_map<int, T>::iterator it;
for (it = mymap.begin(); it != mymap.end(); ++it) {
    // doSomething()
}
Run Code Online (Sandbox Code Playgroud)

下面的代码就像我希望的那样.它遵循如何将BOOST_FOREACH与std :: map一起使用的标准方法.不幸的是,这不编译:

boost::ptr_map<int, T> mymap;
// insert something into mymap
// ...

typedef pair<int, T> IntTpair;
BOOST_FOREACH (IntTpair &p, mymap) {
    int i = p.first;
}
Run Code Online (Sandbox Code Playgroud)

c++ boost

12
推荐指数
3
解决办法
8062
查看次数

Boost C++宏参数计数错误

在下面的代码中:

BOOST_FOREACH(std::pair<PID, bool> &itval, completedEs_) {
    allCompleted &= it->second;
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

错误:宏"BOOST_FOREACH"传递了3个参数,但只有2个

我只传递了两个论点,发生了什么?

c++ macros foreach boost boost-foreach

3
推荐指数
1
解决办法
1278
查看次数

促进每个问题

std::map< std::string , std::string > matrix_int;
typedef std::pair< std::string , std::string > lp_type;
BOOST_FOREACH( lp_type &row, matrix_int ){

}
Run Code Online (Sandbox Code Playgroud)

这不能被遵守:错误C2440:'初始化':无法从'std :: pair <_Ty1,_Ty2>'转换为'lp_type&'

当我在元素类型中有','时,boost doc说我可以使用typedef或预定义var; 但是当我想要参考时我该怎么办?

c++ boost boost-foreach

2
推荐指数
1
解决办法
1199
查看次数

标签 统计

c++ ×4

boost ×3

boost-foreach ×2

algorithm ×1

foreach ×1

macros ×1

std-pair ×1

stdmap ×1

stl ×1