【发布时间】:2021-01-29 12:04:36
【问题描述】:
std::set<std::string> &uniq_email_list;
我有一组许多电子邮件元素,例如:
('foo@bar.com', 'foo2@bar.com', 'foo@bazz.com', 'foo2@bazz.com','zfoo@bar.com')
然后我将这些元素写入文件
for(iter = uniq_email_list.begin() ; iter!=uniq_email_list.end(); ++iter){
output_file<< *iter << std::endl;
}
在我将这些元素写入文件之前,我想按'@'下一个域名排序 我希望它在文件中看起来像这样
foo@bar.com
foo2@bar.com
zfoo@bar.com
foo@bazz.com
foo2@bazz.com
我知道
您不能使用集合,它的排序方式是特定集合类型的一部分。给定的集合具有固定的集合顺序,无法更改。
您可以相对轻松地创建具有相同数据的新集合。只需创建一个根据新标准进行排序的新集合
我看了那篇帖子Sorting Sets using std::sort 但我找不到问题的答案。
根据我的研究,我发现了类似的东西
std::set<string>::iterator ⁢
it=myset.find('@');
我可以用这种结构对返回的地址进行排序吗?或者如果有其他适合这个问题的解决方案,提前谢谢你,我准备就C++解决方案相关的问题获得建议。
【问题讨论】:
-
请不要使用“C/C++”。 C 和 C++ 是非常不同的语言。你显示的显然不是 C。
-
“这个结构”是什么意思?不,
std::set无法排序,无论代码中存在什么其他结构。 -
您可以将自定义比较器设置为
std::set。 std::set<Key,Compare,Allocator>::set - cppreference.com