是否有任何更短的方式来获得两个字符串的交集和并集?

时间:2016-05-11 04:34:09

标签: c++ string visual-c++ set

是否有更短的方式获得两个字符串的交集和并集?我一直在寻找如何得到一个交集和字符串联合并遇到这个答案 Intersection and union of two strings但是,对于这种简单的操作似乎太长了,也许是因为我习惯了python风格(我最近开始学习C ++)。无论如何,如果有人向我展示简洁的方法,我将非常感激。

2 个答案:

答案 0 :(得分:1)

您可以使用范围库来减少详细程度,例如: Boost.Range。 STL非常冗长,因为它基于迭代器而不是基本上是迭代器对的范围。使用Boost.Range,您可以编写

std::string s1, s2;
std::string difference;
boost::set_difference( boost::sort(s1), boost::sort(s2), std::back_inserter(difference) );

答案 1 :(得分:0)

正如评论已经提出的那样,没有。

基本上,"冗长"链接解决方案的原因是因为必须指定所有这些参数才能成为通用的。一些常见操作具有较少冗长的特定变体(例如,string::operator=使用的冗长比std::equal更简洁),但涵盖常见函数。两个字符串的结合不是一个常见的操作,它可能在家庭作业中使用的比其他任何地方都要多。