私はプログラミングの問題を解決していました。それは、2つのセット間の対称差を見つけたいと思っています。STLを使用して解決しましたset_symmetric_difference
。私は2つ与えられvector<int>s
、A
そしてB
:
A = {342,654,897,312,76,23,78}
B = {21,43,87,98,23,756,897,234,645,876,123}
返される(正解):
{21,43,76,78,87,98,123,234,312,342,645,654,756,876}
しかし、私は得ます:
{21,43,76,78,87,98,123,234,312,342,645,65,756,876}
何が問題ですか ?これが私のコードです:
sort(A.begin(), A.end());
sort(B.begin(), B.end());
// allocate the smallest size of A,B as maximum size
vector<int> c(A.size() < B.size() ? B.size() : A.size());
vector<int>::iterator i;
i = set_symmetric_difference(A.begin(), A.end(), B.begin(), B.end(), c.begin());
return vector<int>(c.begin(), i);
注: 残りの例では正しい答えが得られます。この例は私にこの間違った答えを与えるだけです。
Visual Studioでテストしたところ、「イテレータはインクリメントできません」というエラーメッセージが表示されました。