2015-10-19 337 views
1

我希望通過按指定順序將map中的指針對指向vector<pair<string,void*>*>,從而在std::map<string,void*>中存儲對的不同順序。如何獲得指向map中每對的指針?如何在std :: map中獲取指向一對的指針

+1

考慮將迭代器存儲在向量中,即使用'std :: vector :: iterator>'或者甚至可以使用'std :: vector :: const_iterator>'如果適用。 –

+0

是的@MatthausBrandl迭代器只有4bytes和指針相同。謝謝 – neckTwi

+0

@MatthausBrandl你確定迭代器沒有任何堆內存嗎?因爲迭代器可以將我們指向下一個和前一個對! – neckTwi

回答

1

如果您取消引用地圖的迭代器,則會獲得對該對的引用。拿這個地址給你一個指向這個對的指針。

auto it = map.begin(); 
auto ptr = &*it; 

但是,在聲明該對時要小心,因爲第一個元素是const:pair<const string, void *>。或者使用std::map<string,void*>::value_type代替配對。

+0

汽車ptr = &*it;不需要這個 – Nandu

+0

我知道這是如何做到的,但我得到了一些我錯過了的錯誤。感謝您的確認。 – neckTwi

0

只要迭代地圖取元件的地址超過:

for (auto& my_pair : my_map) 
    my_vector.push_back(&my_pair); 
0
std::map<string,void*> mymap; 
std::map<string,void*>::iterator mapIter = mymap.begin(); 

mapIter是迭代器(其作用類似於指針)每一對,從第一個。