
c++中list链表如何实现输出指定位置的值
你好,list 底层是一个链表, 是用指针实现的,所以不能向数组那样直接得到,你可以自己写一个来遍历, 如;
template<typename T>
T get_value(list<T> ls, int index) {
typename list<T>::iterator iter;
iter = ls.begin();
for(int i = 0; i < index; ++i) {
iter++;
}
return *iter;
}
对于 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就是数组,一般数组都提供了下标操作。
2016-08-17