C++ 算法库(2) 修改内容的序列操作(七)

2014-11-24 08:21:27 · 作者: · 浏览: 5

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 // unique_copy example
#include // std::cout
#include // std::unique_copy, std::sort, std::distance
#include // std::vector

bool myfunction (int i, int j) {
return (i==j);
}

int main () {
int myints[] = {10,20,20,20,30,30,20,20,10};
std::vector myvector (9); // 0 0 0 0 0 0 0 0 0

// using default comparison:
std::vector ::iterator it;
it=std::unique_copy (myints,myints+9,myvector.begin()); // 10 20 30 20 10 0 0 0 0
// ^

std::sort (myvector.begin(),it); // 10 10 20 20 30 0 0 0 0
// ^

// using predicate comparison:
it=std::unique_copy (myvector.begin(), it, myvector.begin(), myfunction);
// 10 20 30 20 30 0 0 0 0
// ^

myvector.resize( std::distance(myvector.begin(),it) ); // 10 20 30

// print out content:
std::cout << myvector contains:;
for (it=myvector.begin(); it!=myvector.end(); ++it)
std::cout << ' ' << *it;
std::cout << ' ';

return 0;
}

输出:

1 myvector contains: 10 20 30