C++ステップアップ:STLアルゴリズム14--交換
3013 ワード
1.概要
関数#カンスウ#
さぎょう
ドキュメント
swap()
[
swap_ranges()
2つの
iter_swap()
2.サンプルコード swap swap_ranges iter_swap
3.練習交換関数を用いてバブルソート を実現する.
関数#カンスウ#
さぎょう
ドキュメント
swap(a,b)
a
とb
に格納された値を交換します.swap()
swap_ranges(beg1,end1,beg2)
[
beg1
,end1
]内の元素[beg2
,beg2+end1-beg1
)の元素値を交換する.swap_ranges()
iter_swap(it_a,it_b)
2つの
ForwardIterator
の値を交換します.iter_swap()
2.サンプルコード
// swap algorithm example (C++98)
#include // std::cout
#include // std::swap
#include // std::vector
int main () {
int x=10, y=20; // x:10 y:20
std::swap(x,y); // x:20 y:10
std::vector foo (4,x), bar (6,y); // foo:4x20 bar:6x10
std::swap(foo,bar); // foo:6x10 bar:4x20
std::cout << "foo contains:";
for (std::vector::iterator it=foo.begin(); it!=foo.end(); ++it)
std::cout << ' ' << *it;
std::cout << '
';
return 0;
}
// swap_ranges example
#include // std::cout
#include // std::swap_ranges
#include // std::vector
int main () {
std::vector foo (5,10); // foo: 10 10 10 10 10
std::vector bar (5,33); // bar: 33 33 33 33 33
std::swap_ranges(foo.begin()+1, foo.end()-1, bar.begin());
// print out results of swap:
std::cout << "foo contains:";
for (std::vector::iterator it=foo.begin(); it!=foo.end(); ++it)
std::cout << ' ' << *it;
std::cout << '
';
std::cout << "bar contains:";
for (std::vector::iterator it=bar.begin(); it!=bar.end(); ++it)
std::cout << ' ' << *it;
std::cout << '
';
return 0;
}
// iter_swap example
#include // std::cout
#include // std::iter_swap
#include // std::vector
int main () {
int myints[]={10,20,30,40,50 }; // myints: 10 20 30 40 50
std::vector myvector (4,99); // myvector: 99 99 99 99
std::iter_swap(myints,myvector.begin()); // myints: [99] 20 30 40 50
// myvector: [10] 99 99 99
std::iter_swap(myints+3,myvector.begin()+2); // myints: 99 20 30 [99] 50
// myvector: 10 99 [40] 99
std::cout << "myvector contains:";
for (std::vector::iterator it=myvector.begin(); it!=myvector.end(); ++it)
std::cout << ' ' << *it;
std::cout << '
';
return 0;
}
3.練習