There is an array masiv_C0 = {{A, B}, {A, C}, {B, C}}
There is an array masiv_X0 = {{A, B}}
It is necessary to create the third array of the first two:
masiv_Y1 = masiv_C0 - masiv_X0 = {{A, C}, {B, C}}
The problem is that in the third array that I create, separate elements A and B are also deleted.
As a result, instead of getting {{A, C}, {B, C}} I get {{C}, {C}} ... Help me fix the code! Thanks in advance :)
#include <iostream> #include <vector> #include <algorithm> #include <iterator> using namespace std; typedef std::vector<std::string> String1D; typedef std::vector<String1D> String2D; int main() { String2D masiv_C0(3, String1D(2)); masiv_C0[0][0]="A"; masiv_C0[0][1]="B"; masiv_C0[1][0]="A"; masiv_C0[1][1]="C"; masiv_C0[2][0]="B"; masiv_C0[2][1]="C"; String2D masiv_X0(1, String1D(2)); masiv_X0[0][0]="A"; masiv_X0[0][1]="B"; String2D masiv_Y1 = masiv_C0; for ( size_t i = 0; i < masiv_X0.size(); ++i) { for ( size_t j = 0; j < masiv_X0[i].size(); ++j) { auto& str = masiv_X0[i][j]; for (size_t cur = 0; cur < masiv_Y1.size(); ++cur) { auto iter = std::remove(masiv_Y1[cur].begin(), masiv_Y1[cur].end(), str); masiv_Y1[cur].erase(iter, masiv_Y1[cur].end()); } } } String2D::iterator iter = masiv_Y1.begin(); while (iter != masiv_Y1.end()) { std::copy((*iter).begin(), (*iter).end(), std::ostream_iterator<std::string>(cout, " ")); cout << "\n"; ++iter; } return 0; }