gpt4 book ai didi

c++ - 迭代定义为 typedef C++ 的 vector

转载 作者:行者123 更新时间:2023-11-28 01:41:15 26 4
gpt4 key购买 nike

我有一个结构如下

struct pins
{
PType pintypes;
GType Grouptypes
};

其中 PType 和 GType 定义为

typedef std::vector< pInfo > PType;
typedef std::vector<gInfo> GType;

其中 pInfo 和 gInfo 是样本成员为

struct pInfo {
std::string pinNumber;
std::string pinName;
};

现在我正在比较引脚变量中的两个引脚信息。我想看看给定的两个引脚是否具有完全相同的引脚类型。

我正在尝试如下。

for (std::vector<pInfo>::const_iterator prim1Pin = pins.pinTypes.begin(); prim1Pin != pins.pinTypes.end(); prim1Pin++)
{
if (bRet)
{
std::vector<pInfo>::const_iterator prim2pin = std::find(prim2.pinTypes.begin(), prim2.pinTypes.end(), (*prim1Pin).pinNumber);
if (prim2pin!=prim2.pinTypes.end())
{
bRet &= ((*prim2pin).PinNumber== (*prim1Pin).PinNumber&& (*prim2pin).pinName == (*prim1Pin).pinName)
}
else
bRet &= false;
}
}

当我编译它时,我在 algorithm.h 文件中得到以下错误

错误 C2678 二进制“==”:未找到接受类型为“pInfo”的左侧操作数的运算符(或没有可接受的转换)C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\算法 41不知道这有什么问题。我使用的是低于 C++ 11 的版本。

最佳答案

在调用 find 时,您正在遍历一个包含一堆 pinType 对象的容器,同时搜索 string 值。编译器需要 operator== 的重载,它在左侧采用 pinType,在右侧采用 string

因此您需要提供该操作,或者定义一个 lambda 或比较类来处理它。

关于c++ - 迭代定义为 typedef C++ 的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47064317/

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