c******t 发帖数: 133 | 1 菜鸟弱问:各种容器的sort函数都要两个iterator作为参数,能不能用pointer呢?我
自己理解的是如果内存连续就应该可以用pointer,比如vector,内存不连续就不行,
比如list,可是试了一下,vector也不能用pointer作为参数来排序,为什么?
iterator有哪些特殊的功能?谢谢了! |
p***o 发帖数: 1252 | 2
你没写对。
【在 c******t 的大作中提到】 : 菜鸟弱问:各种容器的sort函数都要两个iterator作为参数,能不能用pointer呢?我 : 自己理解的是如果内存连续就应该可以用pointer,比如vector,内存不连续就不行, : 比如list,可是试了一下,vector也不能用pointer作为参数来排序,为什么? : iterator有哪些特殊的功能?谢谢了!
|
G***l 发帖数: 355 | 3 iterator是一个class,不过实现了* operator,让你感觉它和pointer的相似之处,其
实完全不是一回事。打个比方,我有一个bank deposit的class,实现了+operator,可
以往上加钱,你说这个class跟同样可以+的int/double是一回事嘛?
stl iterator是iterator pattern的一种实现,所以你应该先看一下iterator pattern
,并自己实现一个iterator的数据结构,这样有助于你理解iterator。然后你可以再尝
试下实现一个stl的container和iterator。
【在 c******t 的大作中提到】 : 菜鸟弱问:各种容器的sort函数都要两个iterator作为参数,能不能用pointer呢?我 : 自己理解的是如果内存连续就应该可以用pointer,比如vector,内存不连续就不行, : 比如list,可是试了一下,vector也不能用pointer作为参数来排序,为什么? : iterator有哪些特殊的功能?谢谢了!
|
d****i 发帖数: 4809 | 4 list 当然能用指针来access, iterator 就是为了
方便你使用,底层就是用指针来实现
【在 c******t 的大作中提到】 : 菜鸟弱问:各种容器的sort函数都要两个iterator作为参数,能不能用pointer呢?我 : 自己理解的是如果内存连续就应该可以用pointer,比如vector,内存不连续就不行, : 比如list,可是试了一下,vector也不能用pointer作为参数来排序,为什么? : iterator有哪些特殊的功能?谢谢了!
|
c******t 发帖数: 133 | 5 谢谢大家的解答!确实如pptwo所说,我自己写的有问题,所以vector,string之类的
sort是可以用两个pointer来作为参数的。list的sort本来就不一样,我搞错了。
也谢谢Godel和domini的指导,我再好好学习一下。 |