ベクトルAとベクトルBに表示される要素を削除する必要がありますが、ベクトルAにのみ含まれる要素は削除する必要があります。必ずしも互いに等しいとは限らない。場合C++:1つのベクトル内にある要素を別のベクトルから削除する
たとえば、: ベクトルAに値が含ま< 1,4,66,22> ベクトルBは値が含ま< 1,22,44,93,102,543>
次に動作を予備成形した後: < 44,93,102,543>
が含まれている必要があり、ベクトルAは< 4,66> ベクトルBが含まれている必要があり、私は、forループの両方をループする必要があると値をstrncmpはまたは私は合理化するために使用できる機能ですかプロセス? これは私が試みたものですが、うまくいかないようです。
string rawInput;
string fileInput;
vector<string> stdInput; //vector to hold standard input values
vector<string> fileList; //vector to hold file values
sizeIn = stdInput.size();
sizeFile = fileList.size();
if (sizeIn >= sizeFile)
{
for (count = 0;count <= sizeIn; count++)
{
for (count1 = 0; count1 <= sizeFile; count1++)
{
if (stdInput[count1] == fileList[count])
{
stdInput.erase(stdInput.begin()+count1-1);
fileList.erase(fileList.begin()+count-1);
}
}
}
}
else
{
for (count = 0; count <= sizeFile; count ++)
{
for (count1 = 0; count1 <= sizeIn; count1++)
{
if (stdInput[count] == fileList[count1])
{
stdInput.erase(stdInput.begin()+count-1);
fileList.erase(fileList.begin()+count1-1);
}
}
}
}
それが保持要素の相対的な順序を維持するために必要ですか? – Arun
両方のベクトルがソートされている場合は、['std :: set_difference'](http://en.cppreference.com/w/cpp/algorithm/set_difference)を使うことができます。 –
いいえ、私はそれらをsort(fileList.begin()、fileList.end())を介して使用します。 after – hournet562