【发布时间】:2017-08-12 10:28:30
【问题描述】:
在下面的代码中,我有 4 个向量 a,b,v1,v2。
在计算a和b的集合差后,b和a我将它们的结果分别存储在v1和v2向量中。
- 向量 'a' 包含元素 {'a','b','c'} 和
- 向量 'b' 包含元素 {'a','b'}。
- 现在 v1 包含大小为 1 的“c”,但 v2 不包含大小为 1 的“c”。 这怎么可能? 注意向量 a 和 b 包含集合的元素!!!
这是我的代码:
#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 抗体 光盘
输出:
1 1
c
2 3
a b
c d e
2 2
a b
c d
【问题讨论】:
-
你怎么知道,没有?
-
我得到了正确的输出。
-
根据the manual,需要对向量进行排序才能使其工作。
-
@chinnabathinikarunakar 请提供minimal reproducible example 与您声称的行为。否则不会发生。
-
你怎么知道的?
标签: c++ vector set-difference