首页 > 试题广场 >

在C++STL中常用的容器和类型,下面哪些支持下标"[]"运

[不定项选择题]
在C++STL中常用的容器和类型,下面哪些支持下标"[]"运算?
  • vector
  • list
  • deque
  • map
  • set
  • unordered_map
  • unordered_set
  • stack
  • string
推荐
ACDFI
vector:随机访问迭代器,复杂度O(1)
deque:同上,O(1)
map:双向迭代器,不过由于是关联容器,需要通过key访问alue的方法,O(h),h为树的高度
unordered_map:前向迭代器,同上,平摊复杂度O(1),最差O(n),也与散列函数的好坏有关。
string:同vector

编辑于 2015-12-08 19:06:27 回复(1)
  • vector
  • list
发表于 2015-09-16 18:10:47 回复(0)
支持随机访问就支持[]
发表于 2015-09-19 14:21:19 回复(0)

标准 STL 序列容器: vector string deque list
标准STL 关联容器: set multiset map multimap
非标准序列容器slist rope slist 是一个单向链表, rope 本质上是一 重型 ”string
非标准的关联容器hash_set hase_multiset hash_map hash_multimap
几种标准的非STL 容器,包括数组、 bitset valarray stack queue priority_queue

顺序容器类型

顺序容器

 

Vector

支持快速随机访问

List

支持快速插入 / 删除

Deque

双端队列

顺序容器适配器

 

Stack

后进先出( LIFO )栈

Queue

先进后出( FIFO )队列

Priority_queue

有优先级管理的队列

 

关联容器类型

 

Map

关联数组:元素通过键来存储和读取

Set

大小可变的集合,支持通过键实现的快速读取

Multimap

支持同一个键多次出现的 map 类型

Multiset

支持同一个键多次出现的 set 类型

 

发表于 2016-10-08 16:14:38 回复(1)
“deque 为双向队列,支持快速随机访问,在头尾位置插入或删除速度很快;” —— 《C++ Primer 第5版》
因此deque支持索引[]运算
发表于 2015-09-15 17:32:49 回复(1)

【vector】

内存空间连续,支持随机访问

✔️1.下标访问;2.成员函数at()访问


【list】

内存空间不连续,不支持随机访问

❌ 1.下标访问;2.成员函数at()访问

✔️从头到尾或从尾到头访问


【deque】

内存空间连续,支持随机访问

✔️ 1. 下标访问;2.成员函数at()访问

⚠️deque内部结构会多一个间接的过程,因此元素存取和迭代器操作会稍微慢一些,但其使用内存比vector和list合理


【map】

✔️用数组表示法(将键用作索引)来访问存储的值

编辑于 2020-03-20 14:28:01 回复(0)
vector 地址连续,与数组一样,可以用下标随机访问,如vec[1],vec[2];
list 双向链表,地址不连续,是通过指针连接下一个节点,无法随机访问,只能遍历,没有【】
deque 双向队列(double ended queue),地址是连续的(也有人说地址不连续),有【】,如deq[3],deq[5]
map,set 都是关联容器,地址是随机的,是种有序的二叉树结构,由于map的数据类型是键-值对,键是唯一的,所以可以通过键访问值,如m[key],不一定是数字
发表于 2019-09-17 10:36:14 回复(0)
可以通过[]访问的有string、vector、deque、map、map变体,当通过[]访问map及其变体时,如果元素不存在,则新建元素放入map中
发表于 2017-06-20 16:30:52 回复(0)
来自@不忘_初心

标准 STL 序列容器: vector string deque list
标准STL 关联容器: set 、 multiset 、 map 和 multimap 。
非标准序列容器slist 和 rope 。 slist 是一个单向链表, rope 本质上是一 “ 重型 ”string 。
非标准的关联容器hash_set 、 hase_multiset 、 hash_map 和 hash_multimap 。
几种标准的非STL 容器,包括数组、 bitset 、 valarray 、 stack 、 queue 和 priority_queue 。

顺序容器类型

顺序容器

Vector

支持快速随机访问

List

支持快速插入 / 删除

Deque

双端队列

顺序容器适配器

Stack

后进先出( LIFO )栈

Queue

先进后出( FIFO )队列

Priority_queue

有优先级管理的队列

关联容器类型

Map

关联数组:元素通过键来存储和读取

Set

大小可变的集合,支持通过键实现的快速读取

Multimap

支持同一个键多次出现的 map 类型

Multiset

支持同一个键多次出现的 set 类型

编辑于 2017-05-13 20:31:58 回复(0)
list,set,stack都是不能用序号的,再的都可以
只要不是链表结构,不是树都可以。。
但是...deque是个意外..
编辑于 2016-11-15 09:45:28 回复(1)
list是链表结构,不支持随机访问
发表于 2016-04-20 23:47:57 回复(1)
set和list(链表)不支持随机访问
发表于 2021-03-20 21:17:25 回复(0)
list、set、unordered_set和stack都不支持随机访问,即不支持下标运算,故BEGH错误,选ACDFI。
编辑于 2018-11-29 15:22:52 回复(0)

deque

std::deque (double-ended queue) is an indexed sequence container that allows fast insertion and deletion at both its beginning and its end.

map

std::map is a sorted associative container that contains key-value pairs with unique keys implemented by red-black tree,with logarithmic complexity for Search, removal, and insertion operations .

unordered map

Unordered map is an associative container that contains key-value pairs with (not sorted)unique keys. Search, insertion, and removal of elements have average constant-time complexity.

发表于 2018-09-26 20:14:57 回复(0)
vector deque map unordered_map string  支持随机访问
发表于 2017-04-05 20:00:34 回复(0)
vector:随机访问迭代器,复杂度O(1)
deque:同上,O(1)
map:双向迭代器,不过由于是关联容器,需要通过key访问alue的方法,O(h),h为树的高度
unordered_map:前向迭代器,同上,平摊复杂度O(1),最差O(n),也与散列函数的好坏有关。
string:同vector
发表于 2016-05-30 09:26:08 回复(0)
vector deque map unordered_map string
发表于 2015-12-08 17:07:06 回复(0)
ACDFI
发表于 2015-09-18 18:58:55 回复(0)
1
发表于 2015-09-17 08:37:17 回复(0)
deque可以吧!
发表于 2015-09-16 09:51:40 回复(0)