2016-06-21 7 views
-1

Die Antwort darauf existiert fast sicher woanders Ich kann einfach nicht die Worte dafür finden, bitte fühlen Sie sich frei, mich zu anderen Ressourcen zu verweisen.Implementierung einer Python-ähnlichen Liste in C++

Ich bin auf der Suche nach einer Python-esque Liste in C++ zu implementieren. Ich nicht bedeuten, ich möchte eine vector erstellen. Ich weiß, wie das gemacht wird. Ich möchte eine Datenstruktur erstellen, die folgende Werte speichern kann:

[1, "a", 3.5] 

wie in Python. Ich möchte auch, dass es in der Größe dynamisch ist.

Gibt es einen Namen dafür? Ist das schon irgendwo implementiert?

Ich habe mit einer verknüpften Liste zu experimentieren, die auf Vorlagen basierenden Knoten enthält, aber ich weiß nicht, wie die zugreifenden Funktion zu schreiben, die i Knoten erhalten wird, wenn der Knoten i potenziell jeden Datentyp hat. Gedanken, Vorschläge? Vielen Dank im Voraus.

+7

Sieht aus wie ein 'std :: tuple' eigentlich, anstatt ein' std :: vector', es sei denn, Sie denken über ein ['std :: vector '] (http://en.cppreference.com/ w/cpp/Dienstprogramm/alle). –

+0

@ πάνταῥεῖ 'std :: Vektor ' ist wie, was ich suche, aber gibt es eine Lösung für das, das nicht C++ 17 ist? –

+3

'std :: vector ' – Fireho

Antwort

1

wie in Python. Ich möchte auch, dass es in der Größe dynamisch ist.

Nun, für feste Größen sollte eine Ihnen gut dienen.

Gibt es einen Namen dafür? Ist das schon irgendwo implementiert?

Der „Name für diese“ ist, ein Behälter dient, eine beliebige Folge von Typen zu speichern, mit einer dynamischen Größe. Der Fokus liegt jedoch auf dem beliebigen Typ Platzhalter.

Leider gibt es keinen std::any Typ im aktuellen Standard, der dynamisch große Container wie std::vector<std::any> unterstützt. Wenn Sie keinen Zugriff auf eine experimentelle Implementierung mit Ihrer Toolchain haben, können Sie möglicherweise den Typ boost::any verwenden.

0

Sie möchten vector von any. Der Typ any kommt in Boost oder C++ 17.