我有一张地图:
std::map<int,float> m1;
我想将一个指向该地图的指针传递给一个函数,该函数将迭代地图并根据某些条件返回指向该地图中特定元素的指针。
float *foo(map<int,float> *m1){
float *result;
for(map<int,float>::iterator it = m1->begin(); it != m1->end(); it++)
{
if (condition)
{
result = &(it->second);
break;
}
}
return result;
}
此代码未编译。我很难看到什么是指针,什么不是。如何将指针传递给地图会影响迭代器循环?
谢谢!
答案 0 :(得分:4)
不要编写自己的函数,使用标准库:std::find_if
正是您所寻找的:
auto it = std::find_if (m1.begin(), m1.end(), TestFunction);
if(it != m1.end())
...
答案 1 :(得分:1)
迭代器(ite)是一个堆栈变量,你返回一个指向堆栈中变量的指针(&amp; ite-&gt; second)。这是错误的。