C++標準ライブラリ関数のbeginとend関数と標準ライブラリコンテナのbeginとendメンバー
1629 ワード
もしあなたの手元にC++Primerがあれば、この2点はそれぞれP 106、P 298で、本をめくりたくないなら、この文章をよく見てください.本にはもっと詳細があります.時間があれば、もっと本をめくりましょう.
標準ライブラリのbegin()とend()関数はC++11の新しい標準で導入された関数で、配列タイプを操作し、そのヘッダポインタを返し、標準ライブラリコンテナを操作し、対応する反復器を返します.
標準ライブラリコンテナのbegin()とend()メンバー関数は、対応するクラスのメンバーに属し、オブジェクトコンテナの先頭と末尾の反復器を返します.
新しい標準ライブラリのbegin()とend()関数は、配列の先頭ポインタ(最後の要素の次のアドレスであることに注意)を容易に取得できます.
最も簡単な泡のソートを例に挙げます.
標準ライブラリのbegin()とend()関数はC++11の新しい標準で導入された関数で、配列タイプを操作し、そのヘッダポインタを返し、標準ライブラリコンテナを操作し、対応する反復器を返します.
標準ライブラリコンテナのbegin()とend()メンバー関数は、対応するクラスのメンバーに属し、オブジェクトコンテナの先頭と末尾の反復器を返します.
新しい標準ライブラリのbegin()とend()関数は、配列の先頭ポインタ(最後の要素の次のアドレスであることに注意)を容易に取得できます.
最も簡単な泡のソートを例に挙げます.
/***************************************************************************
* @file main.cpp
* @author MISAYAONE
* @date 24 March 2017
* @remark 24 March 2017
* @theme Bubble Sort
***************************************************************************/
#include
#include
using namespace std;
//
void Bubble_sort(int *begin, int *end)
{
for (auto p1 = begin; p1 != end; ++p1)
{
for (auto p2 = begin; p2 != end-1; ++p2)
{
if (*p2 > *(p2+1))
{
int val_temp = *p2;
*p2 = *(p2+1);
*(p2+1) = val_temp;
}
}
}
}
// , ,
void Bubble_sort(vector::iterator begin, vector::iterator end)
{
int flag= 0;
for (auto p1 = begin; p1 != end; ++p1)
{
flag = 0;
for (auto p2 = begin; p2 != end-1; ++p2)
{
if (*p2 > *(p2+1))
{
int val_temp = *p2;
*p2 = *(p2+1);
*(p2+1) = val_temp;
flag = 1;//
}
}
if (flag == 0)// ,
{
break;
}
}
}
int main(int argc,char** argv)
{
int a[10] = {1,5,8,7,9,6,4,3,2,0};
vector vec(a,a+10);
Bubble_sort(begin(a),end(a));// begin() end()
cout<