[英]C++ Iterating through map from pointer
我想遍歷一個映射,該地址存儲在一個指針中,因此我可以訪問和修改原始映射,但是,每當我嘗試進行迭代時,它總是會給我造成讀取訪問沖突。
#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;
};
我們如何以正確的方式進行迭代?
您將本地副本的地址存儲在
map_array_util(std::map<A,B> _m)
{
m = &_m;
}
因此,您有懸空的指針。
您可能希望通過引用傳遞:
map_array_util(std::map<A,B>& _m) : m(&_m) {}
代替map_array_util(std::map<A,B> _m)
,您可能意味着
map_array_util(std::map<A,B> &_m)
// ^
順便說一句,這不是國際海事組織的好主意。 您可以更好地從reference_wrapper驅動類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.