gpt4 book ai didi

c++ - set_union() 不适用于一组字符串

转载 作者:搜寻专家 更新时间:2023-10-31 01:24:33 25 4
gpt4 key购买 nike

我试图找出包含字符串的两个集合的并集,使用 set_union(...)功能。但是,它在 stl_algo.h 中抛出错误ar 行号 4948 -

错误: passing 'const std::__cxx11::basic_string<char>' as 'this' argument discards qualifiers [-fpermissive]

我的代码:

#include<bits/stdc++.h>

using namespace std;

int main()
{
int t,k, tmp, i=1,j,l,m,n,x1,x2;
cin>>n;
string st,stt;
set <string> set1,set2,set3;
set1.insert("sdsd");
set1.insert("sdswewd");
set1.insert("ssd");

set2.insert("sdsd");
set2.insert("sdfewew");
set2.insert("ssd");
set_union(set1.begin(),set1.end(),set2.begin(),set2.end(),set3.begin());

return 0;
}

最佳答案

尝试使用 std::inserter

set_union( set1.begin(), set1.end(), set2.begin(), set2.end(),std::inserter( set3, set3.begin() ));

更新:

a1.begin() is simply not an output iterator. inserter(a1,a1.begin()) returns an output iterator which will invoke the set's insert function for each element... Why do we need an inserter function call when doing a set_union for a set?

此外,由于我们正在处理 std::set保证唯一性的容器我们不需要采用 set_union,因为简单的集合插入也将确保不会创建相同元素的拷贝。

//insert all element of set 1 to set 3
set3.insert(set1.begin(),set1.end());
//insert all elements of set 2 (that is not in set 1) to set 3
set3.insert(set2.begin(),set2.end());

关于c++ - set_union() 不适用于一组字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58094123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com