4

値がマップへのポインターであるマップを作成できるようにしたいと考えています。何かのようなもの

std::map<KeyType, const_pointer_to_this_map's_value_type>

const_pointer_to_this_map's_value_type の代わりに const void * を使用できることはわかっています。

https://gist.github.com/tivtag/1208331http://qscribble.blogspot.fr/2008/06/circular-template-references-in-cなどの循環データ型定義のトリックを見てきました。.htmlですが、私のケースに適用できるかどうか、またどのように適用できるかはわかりません。

そこでは独自のクラス (Vertex と Edge、A と B) を使用しますが、ここでは std::map と std::map::value_type が STL ヘッダーで既に定義されており、Combo クラスでインスタンス化することはできません。

上記のマップを定義する方法はありますか?

4

2 に答える 2

0

http://www.sgi.com/tech/stl/Map.htmlから

Map は Pair Associative Container です。つまり、その値の型はpair<const Key, Data>

std::map<K, M>::value_typeは常にstd::pair<K, M>、次のようになります。

#include <map>

typedef int KeyType;

struct MappedType
{
    const std::pair<const KeyType, MappedType>* p;
};

void g()
{
    std::map<KeyType, MappedType> m;

    m[0].p = 0;
    m[1].p = &(*m.find(0));
}
于 2013-06-26T10:12:24.737 に答える