【VC++】関数テンプレートを利用する

0

    <機能>

    (1)関数テンプレートを利用してint/std::string型の配列をvectorに設定する

    (2)vector(動的配列)を昇順でソートして返す

    (3)std::coutで結果を出力する

     

    <動作検証&開発環境>

    Visual Studio Community 2019

    Version16.1.1

     

    <イメージ>

    VC++,コンソールアプリケーション,vector

     

    <使い方>

    Windowsデスクトップウィザードでプロジェクトを作成する

    Windowsデスクトップウィザード

    コンソールアプリケーション(.exe)を指定する

    ソースを追加する

     

    #include <iostream>
    #include <vector>
    #include <algorithm>
    //関数テンプレートを利用する
    template<typename T> void MakeArrayAndSort(std::vector<T>* myArray, T myData[], int count);
    int main()
    {
        //出力文字列
        std::string str("");
        //テンプレートの型がintのとき
        int arrayInt[] = { 9,12,5,20,1 };
        std::vector<int> myIntArray;
        //テンプレート関数を呼び出し、vectorに格納して昇順でソート
        MakeArrayAndSort<int>(&myIntArray,arrayInt,5);
        for (auto itr = myIntArray.begin(); itr != myIntArray.end(); ++itr)
        {
            char buf[512];
            memset(&buf, 0x0,sizeof(buf));
            sprintf_s(buf, "%d ", *itr);
            str.append(buf);
        }
        str.append("¥r¥n");
        //テンプレートの型がstd::stringのとき
        std::string arrayString[] = {"Willson","Johnson","Smith","Davis","Brown"};
        std::vector<std::string> myStringArray;
        //テンプレート関数を呼び出し、vectorに格納して昇順でソート
        MakeArrayAndSort<std::string>(&myStringArray, arrayString, 5);
        for (auto itr = myStringArray.begin(); itr != myStringArray.end(); ++itr)
        {
            str.append(*itr + " ");
        }
        //結果を出力
        std::cout << str << "¥r¥n";
    }
    /******************************************************
    配列をvectorに格納、ソートして返す
      myArray:格納先vector(動的配列)
      myData :格納するデータ(ソート前)
      count  :データの要素数
    ******************************************************/

    template<typename T> void MakeArrayAndSort(std::vector<T>* myArray,T myData[],int count)
    {
        for (int i = 0; i < count; i++)
        {
            myArray->push_back(myData[i]);
        }
        //降順でソートするときはgreaterを指定
        //std::sort(myArray->begin(), myArray->end(), std::greater<T>());
        //昇順でソート
        std::sort(myArray->begin(), myArray->end(), std::less<T>());
    }

     

    よろしければポチッと押してください


    プログラマー ブログランキングへ



    selected entries

    categories

    calendar

    S M T W T F S
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
    << October 2019 >>

    profile

    others

    archives