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

<機能>

(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>());
}

 

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


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



| 1/62PAGES | >>

selected entries

categories

calendar

S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031
<< August 2019 >>

profile

others

archives