2016-04-16 13 views
-1

多くの場合、C++の関数とデータ構造の記述には、の値の要素が使用されています。C++:要素と値という用語は同じ意味ですか?

は、これらの用語は同じことを意味しているのか、要素のいくつかの抽象的な概念でありますか?

特に、http://www.cplusplus.comは、これらの両方の用語を使用します。

ありがとうございました。

+7

"特に、http://www.cplusplus.comはこれらの用語を両方使用します。 - 特に、http://www.cplusplus.comは臭いの大きな山です。ペストのようなそのサイトを避けてください。彼らはC++の権威あるリファレンスではありませんし、しばしば混乱したり間違った用語を使用したりします。 –

+3

むしろhttp://en.cppreference.com/をお勧めします。 –

+1

これは標準の解釈に意味があるので、これは良い質問です。それをdownvoteするのは間違いだ。 –

答えて

5

私には、これらの用語は互換性はありませんが、時には同様のことを表すことがあります。例えば

Takeは:

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

このベクターは、3つの要素があります。各要素には値があり、3番目の要素の値は42です。しかし、ベクトルには3つの値も含まれています(「contains」と「has」の違いに注意してください)。

私の語彙では、値は "this momemntのコンテンツ"です。

私が行う場合:

v[2] += 6; 

それは前にあったように、その後第三の要素は同じ第三の要素であるが、それは42先にいたとき、その値は、今48です。したがって、要素は同じままで、値は変化します。

もちろん、要素の「値」にはポインタ(std::vector<int*>)を指定できます。このポインタは、値[または値を持たないNULL]をポイントします。参照には参照と参照があります。

2

「要素」という用語は、標準テキストでは1100回のように表示され、テキストのコンテキストに応じてさまざまな概念に使用されているようです。

標準ライブラリでは、タイプelement_typeは、ポインタのようなオブジェクト(shared_ptr、unique_ptr、std :: pointer_traits <など)の逆参照によって生成されるタイプを参照します。

例えば:

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

タイプvalue_typeは、コンテナに格納された値を指します。マップのvalue_typestd::pair<const key_type, mapped_type>

とセットである

注、value_typekey_typeと同じタイプです。