Здесь в приведенном ниже коде у меня есть 4 вектора a
,b
,v1
,v2
,
После вычисления разности множеств a и b, b и a I я сохранил их результаты в векторах v1 и v2 соответственно.
Вот мой код:
#include <bits/stdc++.h>
#define REP(i,x,y) for(auto i=x;i!=y;i++)
using namespace std;
int t;
string s1,s2;
bool flag;
int main()
{
cin>>t;
while(t--)
{
flag=false;
set<char> a,b; multiset<char> A,B;
cin>>s1>>s2;
REP(i,0,s1.length())
{
A.insert(s1[i]);
a.insert(s1[i]);
B.insert(s2[i]);
b.insert(s2[i]);
}
vector<char> v1,v2;
set_difference(a.begin(),a.end(),b.begin(),b.end(),inserter(v1,v1.begin()));
set_difference(b.begin(),b.end(),a.begin(),a.end(),inserter(v2,v2.begin()));
cout<<v1.size()<<" "<<v2.size()<<"\n";
REP(i,v1.begin(),v1.end())
cout<<*i<<" ";
cout<<"\n";
REP(i,v2.begin(),v2.end())
cout<<*i<<" ";
cout<<"\n";
}
return 0;
}
Входные данные:
3
abaac
аб
аба
CDE
аб
CD
Выход:
1 1
c
2 3
a b
c d e
2 2
a b
c d
set_difference надеется отсортированный контейнеры.
template <class InputIterator1, class InputIterator2, class OutputIterator>
OutputIterator set_difference (InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
OutputIterator result);
Создает отсортированный начало диапазона в месте, указанном результатом
с установленной разницей отсортированного диапазона [first1, last1) с
уважение к отсортированному диапазону [first2, last2).
vector<int> a={'a','b','a','c'}, b ={'a','b'}, v1,v2;
std::sort(a.begin(), a.end());
std::sort(b.begin(), b.end());
set_difference(a.begin(),a.end(),b.begin(),b.end(),inserter(v1,v1.begin()));
set_difference(b.begin(),b.end(),a.begin(),a.end(),inserter(v2,v2.begin()));std::cout << "Vector v1: (" << v1.size() << ")" << std::endl;
for(auto it:v1)
{
std::cout << it << std::endl;
}
std::cout << "Vector v2: (" << v2.size() << ")" << std::endl;
for(auto it:v2)
{
std::cout << it << std::endl;
}
Выход
Vector v1: (2)
97
99
Vector v2: (0)
Насколько я знаю, такой возможности нет.
Проблема с самим кодом!
Там, давая данные, я должен давать строки как строки одинакового размера.
Вот где я пошел не так, и поэтому я ничего не вставил в набор.
Спасибо всем за то, что вы уделили драгоценное время решению моей проблемы.