发布网友 发布时间:2022-04-22 15:40
共5个回答
热心网友 时间:2023-11-11 03:02
你好,list 底层是一个链表, 是用指针实现的,所以不能向数组那样直接得到,你可以自己写一个来遍历, 如;
template<typename T>
热心网友 时间:2023-11-11 03:02
对于 list<int > lhead;
如果你说的是c++里面的库函数list,是没有这样的成员函数的。
2.如果你说的广义的list,一般情况也是没有的。
3.首先你得知道,得到一个list,你只能知道它的头/尾指针,list长度等。因为它在内存中一般不是顺序存取的,所以没法用类似lhead[3]的方法来获取第三个元素。
解决的办法是写一个遍历函数,获取他的第三个元素,形如:
//库函数
int getNum(int num){
list<int > temp =lhead;
auto iter = temp.begin();
for(int i=0;i<num;++i){
if(iter!=temp.end())
++iter;
}
return *iter;
}
//自定义函数
public int getNum(int num){
list<int > temp =lhead;
for(int i=0;i<num;++i){
if(temp -> next !=NULL)
temp = temp->next;
}
return temp->value;
}
4.一般不赞成用list来做这样的操作,因为list获取一个元素时间复杂度O(n),Array获取只需要用下标 array[3]就行了,时间复杂度为O(1)。
追问array是什么追答array就是数组,一般数组都提供了下标操作。
热心网友 时间:2023-11-11 03:02
可以写个函数吧,参数就为int型下标值,然后遍历链表。热心网友 时间:2023-11-11 03:03
在元素结构中定义一个记录下标的变量就可以了。热心网友 时间:2023-11-11 03:04
重载下标访问运算符,