gpt4 book ai didi

c++ - 设置与具有字符串成员的结构 vector

转载 作者:行者123 更新时间:2023-11-28 07:30:00 24 4
gpt4 key购买 nike

对于以下定义:

struct Operand
{
Operand(std::string opName,bool isInput,bool isOutput,bool isReg) : m_opName(opName),m_isInput(isInput),m_isOutput(isOutput),m_isReg(isReg) {}
std::string m_opName;
bool m_isInput;
bool m_isOutput;
bool m_isReg;
};
typedef std::set<Operand> SensitivityList;
SensitivityList m_sensitivityList;

应执行以下循环:

for (SensitivityList::iterator it = m_sensitivityList.begin();it != m_sensitivityList.end();++it)
{
AddToInterfaceList(it->m_opName,portList,portList,false);
}

AddToInterfaceList的签名是:

static void AddToInterfaceList(std::string& data,std::string& interfaceList32Bit,std::string& interfaceList1Bit);

以上代码的编译失败并出现错误:

'AddToInterfaceList' : cannot convert parameter 1 from 'const std::string' to 'std::string &'

如果我将 SensitivityList 重新定义为:

typedef std::vector<Operand> SensitivityList;

编译成功。set vs. vector 有什么问题?以及如何解决?谢谢

最佳答案

std::set 上的迭代器只能返回对集合中项目的常量引用。如果您可以获得对集合中某个项目的非常量引用,则可以更改该项目的值,这可能会使该集合不再是正确的集合。如果将 AddToInterfaceList 的第一个参数更改为 const std::string& data,它应该可以正常编译。

关于c++ - 设置与具有字符串成员的结构 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17911969/

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