C++標準ライブラリ関数のbeginとend関数と標準ライブラリコンテナのbeginとendメンバー


もしあなたの手元にC++Primerがあれば、この2点はそれぞれP 106、P 298で、本をめくりたくないなら、この文章をよく見てください.本にはもっと詳細があります.時間があれば、もっと本をめくりましょう.
標準ライブラリの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<