我想遍历一个映射,该地址存储在一个指针中,因此我可以访问和修改原始映射,但是,每当我尝试进行迭代时,它总是会导致我违反读取访问权限。
#include <map>
template<typename A, typename B>
class map_array_util
{
public:
map_array_util(std::map<A,B> _m)
{
m = &_m;
}
void copy(B *arr, int size)
{
}
bool equals(B *arr, int size) const
{
int i = 0;
for (auto it = (*m).begin(); it != (*m).end(); ++it)
{
std::pair<A, B> p = *it;
if (*(arr + i) != p.second)
{
return false;
}
i++;
}
return true;
}
private:
std::map<A, B> *m;
};
我们如何以正确的方式进行迭代?
答案 0 :(得分:3)
您将本地副本的地址存储为
WHERE col1 = * AND col2 = combo2value AND col3 = combo3value
所以您有悬空的指针。
您可能希望通过引用传递:
map_array_util(std::map<A,B> _m)
{
m = &_m;
}
答案 1 :(得分:2)
您可能不是说let db = client.db('admin').admin();
db.command({listDatabases: 1, nameOnly: true}, (err, dbs)=>{});
db.command({listCollections: 1, nameOnly: true}, (err, collections)=>{});
,而是说
map_array_util(std::map<A,B> _m)
BTW此类不是IMO的好主意。您可以更好地从reference_wrapper驱动您的课程。