gpt4 book ai didi

c++ - 使用 set_difference 时出现编译错误

转载 作者:太空宇宙 更新时间:2023-11-04 15:45:34 25 4
gpt4 key购买 nike

std::set<std::string> tradedSymbolSet; 
//..
// tradedSymbols is filled
//..
std::set<std::string> symbols;
//...
// symbols is filled
//..

std::set_difference(tradedSymbolSet.begin(), tradedSymbolSet.end(),
symbols.begin(), symbols.end(), diffSet.begin());

我得到这个编译错误:

"error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const std::basic_string<_Elem,_Traits,_Alloc>' (or there is no acceptable conversion)"

提示 set_difference 函数的用法。我无法得到

最佳答案

我猜 diffSetstd::set。如果是,那就是问题所在:std::set 将元素存储为 const 对象,这意味着 std::set::iterator 指向的对象是 只读。你不能写信给它。

使用 std::vectorstd::back_inserter 作为:

std::vector<std::string> diff;

std::set_difference(tradedSymbolSet.begin(), tradedSymbolSet.end(),
symbols.begin(), symbols.end(), std::back_inserter(diff));

一旦你有了diff,你就可以创建一个对象diffSet作为:

std::set<std::string> diffSet(diff.begin(), diff.end());

或者,将元素插入到现有集合中:

std::set<std::string> existingDiffSet;
//some code...

existingDiffSet.insert(diff.begin(), diff.end());

希望对您有所帮助。

关于c++ - 使用 set_difference 时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17208211/

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