STL中的nth_element()方法的使用

STL中的nth_element()方法的使用 通过调用nth_element(start, start+n, end)
方法可以使第n大元素处于第n位置(从0开始,其位置是下标为
n的元素),并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后,但不能保证他们是有序的,下面是这个方法的具体使用方法.

 1 #include <iostream>
 2
 3 #include <algorithm>
 4
 5 #include <functional>
 6
 7 #include <vector>
 8
 9 using namespace std;
10
11
12
13 int main()
14
15 {
16
17     const int VECTOR_SIZE = 50 ;
18
19
20
21     vector<int> Numbers(VECTOR_SIZE) ;
22
23
24
25     vector<int>::iterator start, end, it ;
26
27
28
29     // Initialize vector Numbers
30
31     for(int i=0;i<50;++i){
32
33              Numbers[i]=i;
34
35     }
36
37 /*由于赋值时是有序的,下面random_shuffle()方法将这些数据的顺序打乱*/
38
39     random_shuffle(Numbers.begin(),Numbers.end());
40
41
42
43 // location of first element of Numbers
44
45     start = Numbers.begin() ;
46
47
48
49  // one past the location last element of Numbers
50
51     end = Numbers.end() ;
52
53
54
55     cout << "Before calling nth_element/n" << endl ;
56
57
58
59   // print content of Numbers
60
61     cout << "Numbers { " ;
62
63     for(it = start; it != end; it++)
64
65         cout << *it << " " ;
66
67     cout << " }/n" << endl ;
68
69
70
71   /*
72
73     * partition the elements by the 8th element,
74
75   *(notice that 0th is the first element)
76
77   */
78
79     nth_element(start, start+8, end) ;
80
81
82
83     cout << "After calling nth_element/n" << endl ;
84
85
86
87     cout << "Numbers { " ;
88
89     for(it = start; it != end; it++)
90
91         cout << *it << " " ;
92
93     cout << " }/n" << endl ;
94
95     system("pause");
96
97 }
时间: 2024-10-23 13:00:59

STL中的nth_element()方法的使用的相关文章

STL中栈和队列的使用方法

 STL 中优先队列的使用方法(priority_queu) 基本操作: empty() 如果队列为空返回真 pop() 删除对顶元素 push() 加入一个元素 size() 返回优先队列中拥有的元素个数 top() 返回优先队列对顶元素 在默认的优先队列中,优先级高的先出队.在默认的int型中先出队的为较大的数. 使用方法: 头文件: #include <queue> 声明方式: 1.普通方法: priority_queue<int>q; //通过操作,按照元素从大到小的顺

STL vector中的rbegin方法(5)

public member function <vector> std::vector::rbegin C++98 C++11 reverse_iterator rbegin() noexcept; const_reverse_iterator rbegin() const noexcept; Return reverse iterator to reverse beginning 返回一个反向的首元素. 例子: #include <iostream> #include <v

STL中的set使用方法详细

1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作.vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入.排序.删除.查找等.让用户在STL使用过程中,并不会感到陌生. 关于set,必须说明的是set关联式容器.set作为一个容器也是

STL中队列(queue)的使用方法

STL 中队列的使用(queue) 基本操作: push(x) 将x压入队列的末端 pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值 front() 返回第一个元素(队顶元素) back() 返回最后被压入的元素(队尾元素) empty() 当队列为空时,返回true size() 返回队列的长度 使用方法: 头文件: #include <queue> 声明方法: 1.普通声明 queue<int>q; 2.结构体 struct node { int x, y

STL中慎重选择删除元素的方法

 一.要删除容器中有特定值的所有对象 1.如果容器是vector.string或deque,则使用erase-remove习惯用法.例如: vector<int> c; c.erase(remove(c.begin(),c.end(),1963),c.end());//删除值是1963的元素 下面讲一下算法remove: template<classForwardIterator,class T> ForwardIteratorremove(ForwardIterator fi

STL vector中的front方法(4)

public member function <vector> std::vector::front reference front(); const_reference front() const; Access first element 访问第一个元素 Returns a reference to the first element in the vector. 返回第一个元素的引用. Unlike member vector::begin, which returns an itera

STL vector中的crbegin方法(7)

其实crbegin就相当于cbegin+rbegin. 关于这两个函数可以看我的上两篇博文. public member function <vector> std::vector::crbegin const_reverse_iterator crbegin() const noexcept; Return const_reverse_iterator to reverse beginning Returns a const_reverse_iterator pointing to the

STL中的set使用方法详细!!!!

1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作.vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入.排序.删除.查找等.让用户在STL使用过程中,并不会感到陌生. 关于set,必须说明的是set关联式容器.set作为一个容器也是

C++的STL中vector内存分配方法的简单探索

STL中vector什么时候会自动分配内存,又是怎么分配的呢? 环境:Linux  CentOS 5.2 1.代码 #include <vector> #include <stdio.h> using namespace std; int main() { vector<int> x_vec; printf("data size : [%3d], mem size : [%3d]\n", x_vec.size(), x_vec.capacity())