掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
一番早い整数管理の方法 (ID:59722)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 追加対象ならまだしも、検索対象が千単位なら、整数配列の判定がストレス対象になるとは思えないけど ためしてみよう。 // お試し #include <vector> #include <set> #include <algorithm> #include <cstdlib> #include <iostream> #include <windows.h> long test_1(const int* data, int n) { std::vector< int > coll; long t = GetTickCount(); for (int i = 0; i < n; ++i ){ int val = *data++; if ( std::find(coll.begin(), coll.end(), val) == coll.end() ) { coll.push_back( val ); } } return GetTickCount() - t; } long test_2(const int* data, int n) { std::vector< int > coll; std::set< int > checker; // 既出値チェック用セット long t = GetTickCount(); for (int i = 0; i < n; ++i ){ int val = *data++; if ( checker.insert( val ).second ){ coll.push_back( val ); } } return GetTickCount() - t; } int main() { std::vector<int> input; for( int i = 0; i < 1000000; ++i ){ input.push_back(std::rand() % 100); } std::cout << test_1(&input[0], input.size()) << std::endl; std::cout << test_2(&input[0], input.size()) << std::endl; } 結果: 元データ数100万で 400対800。 千個かそこらでは差が出ないみたいっす。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.