stl使用注意事项

1.怎样获取STL list中的指定元素 貌似没有list.get(i)啊?
转载自: http://topic.csdn.net/u/20110324/10/14543271-4c23-4a18-999d-64be00c2070e.html
排序过后我怎么获取第三个元素呢 ??
sortlist.get(3) 这个不是vector 不对的
难道只有用iter遍历吗
谢谢大家
回复:
1.恩,是的。计数遍历吧
2.用遍历 自然没有问题 但是效率较低,看看有没有别的函数 也许不叫get 叫find之类的
3.list<int>::iterator iter = sortlist.begin();
advance(iter, n - 1);
效率和1楼是一样的是O(n),这是链表这种数据结构本身的特性啊
4.list容器只能遍历了,如果是vector可以直接取【2】
5.如果能get(i)..那vector以后怎么混..
6.LIST是链表结构,VECTOR才类似数组,前者优势是插入删除,想在O(1)时间内定位,还是用VECTOR吧
7.list 只有front和back。中间的元素 只能是遍历了
8.只能是遍历,不过你可以用advanced函数把循环隐藏在内部,你看起来也许就不会那么不爽了。
9.list底层是链表实现的,不能直接get,只能遍历。vector是数组,所以可以用下标直接访问。
10.用遍历吧,这个估计没有别的好办法吧
11.恕我孤陋,vector有get(i)吗?不是at(i)?
12.list只能用遍历了,因为它是用指针的,查找只能用遍历


2.关于stl vector插入元素的问题
转载自: http://topic.csdn.net/u/20110324/10/14543271-4c23-4a18-999d-64be00c2070e.html
stl中的vector,可以提供随机迭代器方便的取,但是存好像并不方便啊
比如共有元素10个,我要在3号位置插入一个元素,插入完成后变成11个.
可以用的vector成员函数有, insert
但是insert需要传的参数是iterator,并不是直接的一个索引
需要这样用
insert( iterator pos , XXXelement )
不能这样用
insert( uint nIndex , XXXelement )
那岂不是我要在3号位置插入元素,还需要用索引循环一遍,先找到在3号位置的Iterator,然后才能插入
这样也太麻烦了吧,为何不提供个直接针对索引的insert呢, <<C++标准库>>和等等网站上都没有查到
回复:
1.额,如果插入频繁那么请用list
2.vector主要用于相对稳定的数据。
楼主参考一下这个吧: http://www.cplusplus.com/reference/stl/
很经典,也很全面,还有示例代码。
3.没有一个容器说插入和随机访问都很好的。这个本来就是一对矛盾。
4.嗯,vector中删除数据的效率相对其他容器要更弱一些。
5.各位大大,我是想问vector有没有成员函数,可以方便的直接在索引位置插入元素,而不是先要找到iterator才能插入
6.额 vector的迭代器 可以直接用算术运算,你想在哪个位置插入。直接用begin()返回的迭代器加上位移量就是了。
7.vector<int>::iterator pos = vec.begin()+3; 迭代器支持算术操作的,不用for循环那么麻烦的。
8.vector<int>::iterator pos = vec.begin() + x;
你对迭代器了解不透彻,多看看C++primer 这些都是简单问题,书中讲的很清楚~
9.vector不是你用迭代器+几就会到几的,内存会越界访问的,只有push_back或者insert才能动态扩展内存.
我建议你初始化vector(length);直接固定vector大小,或者使用数组.



3.STL sort 函数对结构体的排序
转载自: http://www.cnblogs.com/kdy71107216/archive/2009/03/04/1403382.html
C语言函数中,可以用qsort 来进行 结构体数组的排序,但是如果上升到C++中,对vector<NODE>的排序 qsort 就无能为力了。。。
不过C++ <algorithm> 函数库中的sort函数可以对 结构体vector进行排序。 前提是 要对 node 进行改造
例如 一个含有四项key 值的node 如下
例如在全局声明了一个vector<node> V;
则调用sort 如下 sort(V.begin(),V.end());


4.如何在STL中存储结构体指针,及释放
转载自: http://4develop.in/page/Cpp/20110811_11_30d22ff0-3a95-46fe-9de3-28a0e623a931/如何在STL中存储结构体指针及释放.html
1.修改后,代码如下:
主要是概念得认清,因为list中存放的是STR_ALL的指针类型,即PSTR_ALL。而使用iterator时,iterator相当于一个指针,指向list中的成员。因此,我们可以断定iterator是指向PSTR_ALL的指针,即STR_ALL的二级指针,所以,stu = *iii;在iii之前,必须使用*获得一级指针。
2.LZ把分给我吧

你可能感兴趣的:(STL)