在C++中,我得到了以下错误:
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
是一个列表)
发布于 2022-02-23 19:45:33
列表不提供下标运算符。
没错,std::list
不提供operator[]
。(std::vector
和std::array
都这么做。)
std::list
本来可以提供一个索引操作符,这样lst[10]
就可以为您提供列表的第十个元素(从0中计数)。但是操作是O(N),所以lst[100]
所用的时间大约是lst[10]
的10倍,因为它必须从一开始就遍历列表以找到所请求的元素。它将允许您在隐藏低效率的同时编写效率非常低的代码。
如果您需要索引,请使用std::vector
、std::array
或其他类似的工具。
只有当元素可以直接访问时,C++标准库才提供索引操作符,而不遍历容器。
https://stackoverflow.com/questions/71215776
复制相似问题