このコードに問題があり、コードをコンパイルしていますが、ベクターの内容をテストしようとすると、テストが失敗します。コードは次のとおりです。
using std::vector;
// returns a different vector, containing all elements in v1 and all elements in v2 (elements who are either in v1 or v2) but no duplicates.
template <typename T> vector<T> set_union(const vector<T>& v1, const vector<T>&v2)
{
vector<T> v(20);
typename vector<T>::iterator it;
it = set_union (v1.begin(), v1.end(), v2.begin(), v2.end(), v.begin());
return v;
}
そして、ここに私が実行しているテストがあります:
TEST_F(MyTest,set_union) {
vector<int> v1{1,3,2};
vector<int> v2{1,4};
vector<int> v=set_union(v1,v2);
ASSERT_EQ(0,count(v,9));
ASSERT_EQ(1,count(v,1));
ASSERT_EQ(1,count(v,2));
ASSERT_EQ(1,count(v,3));
ASSERT_EQ(1,count(v,4));
}
これらのテストを実行すると、最初のテストはパスしますが、2 番目のテストではベクトル内の数値 1 のインスタンスが 0 個返されます。答えは 1 インスタンスである必要があります。