c**********e 发帖数: 2007 | 1 How do you use STL's std::sort algorithm to sort an array declared as int v[
1000]?
a) std::sort(v);
b) std::sort(v,v+1000);
c) std::sort((void*)v, 1000, sizeof(int), sortInt);
(assuming sortInt is defined properly)
d) std::sort((void*)v,(void*) &v+1000, sizeof(int));
e) std::sort(v.begin(),v.end()); |
h**6 发帖数: 4160 | |
c**********e 发帖数: 2007 | 3 You are right. But could you please explain a little bit.
【在 h**6 的大作中提到】 : b
|
s*********t 发帖数: 1663 | 4 read the signiture of sort..
only thing worth mention here is: v + 1000 correspond to v's end() since v h
as a type of int.
【在 c**********e 的大作中提到】 : You are right. But could you please explain a little bit.
|
h**6 发帖数: 4160 | 5 说实话,这理由还真不好说,一直都是这么用的。
如果v是一个vector,那么应该用 std::sort(v.begin(),v.end()) 进行排序。
作为数组,数组名 v 同时也表示第一个元素的地址,相当于 v.begin(),而 v+1000 则是最后一个元素之后的地址,相当于 v.end() |
s*********t 发帖数: 1663 | 6 xixi
I was first
则是最后一个元
【在 h**6 的大作中提到】 : 说实话,这理由还真不好说,一直都是这么用的。 : 如果v是一个vector,那么应该用 std::sort(v.begin(),v.end()) 进行排序。 : 作为数组,数组名 v 同时也表示第一个元素的地址,相当于 v.begin(),而 v+1000 则是最后一个元素之后的地址,相当于 v.end()
|
c**********e 发帖数: 2007 | 7 Thank both of you, very much. |
M******q 发帖数: 94 | 8 sort() takes RandomAccessIterator, which is just a template parameter name.
As long as the argument of sort() support what RandomAccessIterator is supp
osed to support, sort() should work. Quotes from "thinking in c++ volume 2
":
RandomAccessIterator. This type of iterator supports all the operations that
a regular pointer does: you can add and subtract integral values to move it
forward and backward by jumps (rather than just one element at a time), you
can subscript it with operator[ ], you
【在 h**6 的大作中提到】 : 说实话,这理由还真不好说,一直都是这么用的。 : 如果v是一个vector,那么应该用 std::sort(v.begin(),v.end()) 进行排序。 : 作为数组,数组名 v 同时也表示第一个元素的地址,相当于 v.begin(),而 v+1000 则是最后一个元素之后的地址,相当于 v.end()
|