vector
がソートされている限り、vector
では絶対にアルゴリズムを使用できます。
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
int main() {
std::vector<int> v1 {1, 2, 3, 4};
std::vector<int> v2 {1, 3};
std::vector<int> out;
std::set_difference(std::begin(v1), std::end(v1), // the first vector...
std::begin(v2), std::end(v2), // ...minus the second...
std::back_inserter(out)); // ...is stored into here
for(auto i : out) std::cout << i << ' ';
}
プリント:あなたはその後、別のvector
に出力をプッシュするback_inserter()
を使用することができます
2 4
(このバージョンは、それが<
を使用して要素を比較することができていることを前提とし、要素が関連してソートされていることに注意してくださいそれはあなたのケースでは明らかです)。
['std :: set_difference'](http://en.cppreference.com/w/cpp/algorithm/set_difference)のようなサウンドは、いいえ?あなたはすでにそれに言及しています、なぜあなたはそれを使うことができると思いませんか?それはあなたの 'ベクトル'がソートされていることだけを必要とします。 – BoBTFish
ああ、私はそれを得ると思います:あなたは 'set_'アルゴリズムだけを' std :: set'で使うことができると思いますか?違います。標準ライブラリーのコンテナーとアルゴリズムは、*イテレーター*を介して直接的にはやり取りしないので、アルゴリズムは操作しているコンテナの正確なタイプを気にする必要はありません。結果を 'vector'にも入れたい場合は、アルゴリズムの出力イテレータを作成するために[' back_inserter'](http://en.cppreference.com/w/cpp/iterator/back_inserter)を使います。 – BoBTFish