首页 > 试题广场 >

下面有关vector和list的区别,描述错误的是?

[单选题]
下面有关vector和list的区别,描述错误的是?
  • vector拥有一段连续的内存空间,因此支持随机存取,如果需要高效的随即存取
  • list拥有一段不连续的内存空间,如果需要大量的插入和删除,应该使用list
  • vector::iterator支持“+”、“+=”、“<”等操作符
  • list::iterator则不支持“+”、“+=”、“<”等操作符运算,但是支持了[ ]运算符
推荐
D, ist ::iterator不支持[]
编辑于 2015-02-03 16:22:18 回复(0)
更多回答
vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。

list就是数据结构 中的双向链表(根据sgi stl源代码),因此它的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,因此它没有提供[]操作符的重载。但由于链表的特点,它可以以很好的效率支持任意地方的删除和插入。
发表于 2016-07-05 18:24:30 回复(0)
list<int>::iterator 不支持+,+=,<和[]运算符,因为list是链式存储,这是c++的内容吧
编辑于 2015-07-08 09:21:46 回复(3)
vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。

list就是数据结构 中的双向链表(根据sgi stl源代码),因此它的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,因此它没有提供[]操作符的重载。但由于链表的特点,它可以以很好的效率支持任意地方的删除和插入。
发表于 2020-03-01 18:07:38 回复(0)

C++标准库中的std::list是一个双向链表,它不是一个连续存储的数据结构,而是由许多节点组成的。因此,使用"[]"运算符来直接访问元素并不是一个高效的操作,因为这会涉及遍历链表以找到特定位置的元素。考虑到这一点,设计者决定不支持"[]"运算符,以防止用户误解列表的实际结构,并鼓励他们使用迭代器来访问列表中的元素。

相比之下,像std::vector这样的连续存储数据结构支持"[]"运算符,因为它允许通过简单的指针算术来直接访问内存中的元素,这在性能上是高效的。然而,对于链表这样的非连续存储结构,直接支持"[]"运算符并不符合其内部实现的特性和设计理念。

因此,std::list::iterator不支持"[]"运算符是基于对数据结构设计的考量,以及对使用者编程习惯和性能的影响而做出的决定。

发表于 2023-11-13 10:01:05 回复(0)
list不支持[]运算符
发表于 2021-08-16 19:58:46 回复(0)
迭代器只支持 ++ --
发表于 2019-07-16 18:28:01 回复(1)
vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。 

list就是数据结构 中的双向链表(根据sgi stl源代码),因此它的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,因此它没有提供[]操作符的重载。但由于链表的特点,它可以以很好的效率支持任意地方的删除和插入。

来自:丷柠檬
发表于 2018-06-08 11:52:15 回复(0)
list<int>::iterator不支持+=,<,+,[],仅仅支持++操作
发表于 2018-08-23 14:51:29 回复(0)
  • vector::iterator支持“+”、“+=”、“<”等操作符。
    各位大佬c为什么对?求讲解
    
发表于 2024-02-26 19:44:11 回复(0)
D
发表于 2018-08-28 13:35:23 回复(0)
list不支持随机存取,因此不存在【】运算符
发表于 2018-06-01 21:51:10 回复(0)
list不支持随机存取,不支持[]操作
发表于 2016-08-29 12:40:56 回复(0)
list链表不支持随机访问,不支持[]访问运算符
发表于 2016-05-26 19:51:22 回复(0)
D
发表于 2015-06-17 11:46:14 回复(0)