本当は怖いHPC

HPC屋の趣味&実益ブログ

vectorをuniqする

ネット上では散々既出[1][2]ですが、ソート済みのstd::vector重複要素を削除する方法。

スクリプト言語的にはsetを使いたくなるところだけど、非常に遅いらしいので実験してみた。

Compare speeds of "uniq" operation to std::vector

結果

# Intel(R) Core(TM) i7-3930K  CPU
$ clang++ --version
clang version 3.5.0 (tags/RELEASE_350/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix

$ clang++ -std=c++11 -O2 uniq.cpp && ./a.out 1000000
uniq_erase : 2.274036e-03 sec.
uniq_set   : 1.473670e-01 sec.

参考文献:

[1] STLのvectorから同一要素を削除 - minus9d's diary

[2] std::setで非冗長化を図るのはやめよう - nursの日記

【広告】