首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列表不提供下标运算符。

列表不提供下标运算符。
EN

Stack Overflow用户
提问于 2022-02-22 04:04:52
回答 1查看 702关注 0票数 -1

在C++中,我得到了以下错误:

代码语言:javascript
运行
复制
main.cpp:34:15: error: type 'list<std::string>' (aka 'list<basic_string<char>>') does not provide a subscript operator
  cout << code[0];
          ~~~~^~
1 error generated.
make: *** [<builtin>: main.o] Error 1

为什么?我认为方括号是用来按索引获取列表中某一项的数据的。

(code是一个列表)

EN

Stack Overflow用户

回答已采纳

发布于 2022-02-23 19:45:33

列表不提供下标运算符

没错,std::list不提供operator[]。(std::vectorstd::array都这么做。)

std::list本来可以提供一个索引操作符,这样lst[10]就可以为您提供列表的第十个元素(从0中计数)。但是操作是O(N),所以lst[100]所用的时间大约是lst[10]的10倍,因为它必须从一开始就遍历列表以找到所请求的元素。它将允许您在隐藏低效率的同时编写效率非常低的代码。

如果您需要索引,请使用std::vectorstd::array或其他类似的工具。

只有当元素可以直接访问时,C++标准库才提供索引操作符,而不遍历容器。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71215776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档