C ++:术语元素和值是否意味着相同的东西?

时间:2016-04-16 07:58:16

标签: c++ c++11

我多次看到在描述C ++函数和数据结构时使用术语元素

这些术语是相同的,还是元素 的一些抽象概念?

特别是,http://www.cplusplus.com使用这两个术语。

感谢。

2 个答案:

答案 0 :(得分:5)

对我而言,这些术语不可互换,但有时可能代表类似的事情。

以例如:

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

此向量有3个元素。每个元素都有一个值,第三个元素的值是42.但是向量还包含三个值[注意&#34;包含&#34;之间的差异,而不是&#34;有&#34;]。

在我的词汇表中,值是&#34;内容只是这个momemnt&#34;。

如果我这样做:

 v[2] += 6; 

然后第三个元素仍然是与之前相同的第三个元素,但它的值现在为48,之前为42。因此,元素保持不变,值会发生变化。

当然,&#34;价值&#34;一个元素可以是一个指针(std::vector<int*>),然后它指向一个值[或NULL,它没有任何值]。参考文献中还有一名反叛者和一名参赛者。

答案 1 :(得分:2)

术语“元素”在标准文本中看起来像1100次,并且似乎用于各种各样的概念,具体取决于文本的上下文。

更正式地在标准库中,类型element_type指的是通过解除引用类似指针的对象(shared_ptr,unique_ptr,std :: pointer_traits&lt;&gt;等)而产生的类型。

e.g:

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的类型相同。