C++ 下基於迭代器適配器和範型算法的排序

    `「First」這裏準備展示的是一個C++中利用<algorithm>庫實現的範型排序,以標準庫實例化迭代器適配器,包含流迭代器(輸入、輸出迭代器的形式)。
    `「Second」基本思想:將數據流定向(用STL:<algorithm>中的copy()實現定向輸入流到指定的容器)到標準輸入流中,用STL標準庫<algorithm>中的sort()進行範型排序,最後將容器中的數據流再copy()至標準輸出流中。

    `「Third」代碼(以下針對int數據排序,根據容器數據類型不同排序不同,比如還可以是字符流類型。Linux終端下結束輸入可是用Ctrl+d):

     

#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <cstring>
void istream_iterator_sort_int(){
	std::vector<int> values;//定義容器和數據類型,容器類型需要支持隨意訪問這一特性。
	std::copy(std::istream_iterator<int> (std::cin),std::istream_iterator<int> (),std::back_inserter(values));/*定向輸入數據流到標準輸入流std::cin,每個int數據輸入後enter換行,或者可以將代碼最後的copy()中輸出流迭代器ostream_iterator()中的參數"\n"改爲" ".即每個輸入數據以空格隔開。*/
	std::sort(values.begin(),values.end());//調用範型算法庫<algorithm>中的sort()
	std::cout << "after sort with istream sort and iterator for type <int> : " << std::endl;
	std::copy(values.begin(), values.end(), std::ostream_iterator<int> (std::cout,"\n"));//將輸出數據流定向到標準輸出流std::cout中。
}
int main(int argc, char **argv){
	std::cout << "This is a Template_sort for lots of numbers : " << std::endl;
	istream_iterator_sort_int();
	return 0;
}

就寫到這,扯個蛋收場吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章