2016-04-16 6 views
-1

Oft sehe ich den Begriff Wert und Element wird bei der Beschreibung von C++ - Funktionen und Datenstrukturen verwendet.C++: Bedeuteten die Begriffe Element und Wert dasselbe?

Hat diese Begriffe das gleiche bedeuten, oder ist Element einige abstrakte Konzept eines Wert?

Insbesondere http://www.cplusplus.com verwenden Sie beide Begriffe.

Danke.

+7

"Vor allem http://www.cplusplus.com verwenden beide Begriffe." - Vor allem http://www.cplusplus.com ist ein großer Haufen von stinkendem Bullshit. Meide diesen Ort wie die Pest. Sie sind in keiner Weise autoritativ für C++, und sie verwenden ** oft ** eine verwirrende oder geradezu falsche Terminologie. –

+3

Ich würde http://en.cppreference.com/ eher empfehlen. –

+1

Dies ist eine gute Frage, da sie Auswirkungen auf die Interpretation des Standards hat. es ist falsch, es zu verwerfen. –

Antwort

5

Für mich sind diese Begriffe nicht austauschbar, können aber manchmal ähnliche Dinge darstellen.

Nehmen Sie zum Beispiel:

std::vector<int> v = { 1, 3, 42 }; 

Dieser Vektor hat drei Elemente. Jedes Element hat einen Wert, der Wert des dritten Elements ist 42. Aber der Vektor enthält auch drei Werte [beachten Sie den Unterschied zwischen "enthält", nicht "hat"].

In meinem Vokabular ist ein Wert "der Inhalt gerade dieses momment".

Wenn ich tun:

v[2] += 6; 

dann das dritte Element ist immer noch das gleiche dritte Element, wie es vorher war, aber sein Wert ist jetzt 48, wenn es 42 früher war. Das Element bleibt also gleich, der Wert ändert sich.

Natürlich kann ein "Wert" eines Elements ein Zeiger (std::vector<int*>) sein, der dann auf einen Wert [oder NULL zeigt, der keinen Wert hat]. Referenzen haben auch einen Verweis und einen Wert im Referent.

2

Der Begriff "Element" erscheint im Standardtext etwa 1100-mal und wird je nach Kontext des Textes für eine Vielzahl von Konzepten verwendet.

formaler in der Standardbibliothek bezieht sich der Typ element_type auf den Typ, der durch Dereferenzierung eines zeigerartigen Objekts (shared_ptr, unique_ptr, std :: pointer_traits <> usw.) erhalten wird.

z.B:

using ptr_type = std::shared_ptr<int>; 
using pointee_type = ptr_type::element_type; 
static_assert(std::is_same<pointee_type, int>::value, ""); 

Der Typ value_type bezieht sich auf die in einem Behälter gespeicherten Werten.

Beachten Sie, dass die value_type eine Karte ein std::pair<const key_type, mapped_type>

und in einer Menge ist, value_type ist der gleiche Typ wie key_type.

Verwandte Themen