replace_if
将一个范围中值满足给定条件的元素赋值为新的值
|
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// replace_if example #include #include #include bool IsOdd (int i) { return ((i%2)==1); } int main () { std::vector // set some values: for (int i=1; i<10; i++) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9 std::replace_if (myvector.begin(), myvector.end(), IsOdd, 0); // 0 2 0 4 0 6 0 8 0 std::cout << myvector contains:; for (std::vector std::cout << ' ' << *it; std::cout << ' '; return 0; } |
输出:
|
|
myvector contains: 0 2 0 4 0 6 0 8 0 |
reverse
反转排序指定范围中的元素
|
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// reverse algorithm example #include #include #include int main () { std::vector // set some values: for (int i=1; i<10; ++i) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9 std::reverse(myvector.begin(),myvector.end()); // 9 8 7 6 5 4 3 2 1 // print out content: std::cout << myvector contains:; for (std::vector std::cout << ' ' << *it; std::cout << ' '; return 0; } |
输出:
|
|
myvector contains: 9 8 7 6 5 4 3 2 1 |
reverse_copy
拷贝指定范围的反转排序结果
|
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// reverse_copy example #include #include #include int main () { int myints[] ={1,2,3,4,5,6,7,8,9}; std::vector myvector.resize(9); // allocate space std::reverse_copy (myints, myints+9, myvector.begin()); // print out content: std::cout << myvector contains:; for (std::vector std::cout << ' ' << *it; std::cout << ' '; return 0; } |
输出:
|
|
myvector contains: 9 8 7 6 5 4 3 2 1 |
rotate
循环移动指定范围中的元素
|
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// rotate algorithm example #include #include #include int main () { std::vector // set some values: for (int i=1; i<10; ++i) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9 std::rotate(myvector.begin(),myvector.begin()+3,myvector.end()); // 4 5 6 7 8 9 1 2 3 // print out content: std::cout << myvector contains:; for (std::vector std::cout << ' ' << *it; std::cout << ' '; return 0; } |
输出:
|
|
myvector contains: 4 5 6 7 8 9 1 2 3 |
rotate_copy
拷贝指定范围的循环移动结果
|
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// rotate_copy algorithm example #include #include #include int main () { int myints[] = {10,20,30,40,50,60,70}; std::vector std::rotate_copy(myints,myints+3,myints+7,myvector.begin()); // print out content: std::cout << myvector contains:; for (std::vector std::cout << ' ' << *it; std::cout << ' '; return 0; } |
输出:
|
|
myvector contains: 40 50 60 70 10 20 30 |
shuffle
用指定的随机数引擎随机打乱指定范围中的元素的位置
|
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// shuffle algorithm example #include #include #include #include #include int main () { std::array // obtain a time-based seed: unsigned seed = std::chrono::system_clock::now().time_since_epoch().count(); |