小编use*_*931的帖子

std::set 错误:与 »operator<« 不匹配

我有一堂课(摘录):

\n\n
class Package\n{\nprivate:\n        string s_package_name;\n        float f_boottime;\n        float f_bytesize;\n        list <Package> l_depends;\n        list <Package> l_selects;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想生成许多对象并将它们列出在一个唯一的“数组”中,因此我添加了set如下对象:

\n\n
set<Package> l_tempSet;   \nPackage PackageA(1, 11, "what a package");\nPackage PackageB(2, 22, "what a 2nd package");\n\nl_tempSet.insert(PackageA);\nl_tempSet.insert(PackageB);\n
Run Code Online (Sandbox Code Playgroud)\n\n

编译时我收到一条错误消息:

\n\n
\n

与 \xc2\xbboperator<\xc2\xab 不匹配(操作数类型为 \xc2\xbbconst Package\xc2\xab 和 \xc2\xbbconst\n Package\xc2\xab)

\n
\n\n

当单击错误消息时,它会将我指向 set.h 到unique调用的行,我认为这就是错误。

\n\n

C++ 是否真的无法将“唯一”对象(如本示例中所示)放入列表和集合中,并且只能处理简单的数据类型(如 int、float 等)?或者我在某个地方出错了,请帮助我,我不确定错误到底在哪里。

\n\n

感谢您的支持

\n

c++ set c++11

2
推荐指数
1
解决办法
2342
查看次数

如何检查联合的“最终”类型?

假设我有一个这样的联盟:

union checkUnion{
    std::string* str;
    bool someBool;
    int aNumber;
};
Run Code Online (Sandbox Code Playgroud)

我如何检查在程序中选择了这 3 个项目中的哪一个?我想对每个项目进行单独的 if 查询。

例如:[伪代码]

if (checkUnion == string)
{
   //CODE
}

if (checkUnion == bool)
{
   //DIFFERENT CODE
}
Run Code Online (Sandbox Code Playgroud)

c++ if-statement unions

2
推荐指数
1
解决办法
1492
查看次数

find()是否也返回C++中地图的最后一个元素?

我想使用find()方法来捕获我的std :: map()的特定元素

现在返回值是我正在寻找的元素,或者它指向地图的末尾(如果找不到元素)(Cf:http://www.cplusplus.com/reference/map/map/找/).

所以我正在使用这两个信息来决定元素是否在地图中.但是如果元素已经在内部但在最后呢?会发生什么?然后,我的if-query将决定它不存在,因此我的程序将被编制.

我是否正确使用这个例程,如果,如何预防呢?

感谢您的支持

c++ map find

2
推荐指数
1
解决办法
174
查看次数

确定2D阵列中最长连续值范围的最快方法

问题

让我们假设我们正在使用大型数据集,为了简单起见,我们在这个问题中使用这个较小的数据集:

dataset = [["PLANT", 4,11],
           ["PLANT", 4,12],
           ["PLANT", 34,4],
           ["PLANT", 6,5],
           ["PLANT", 54,45],
           ["ANIMAL", 5,76],
           ["ANIMAL", 7,33],
           ["Animal", 11,1]]
Run Code Online (Sandbox Code Playgroud)

并且我们想找出哪个列具有最长的连续值范围,哪个是最快的找出方法,哪个是最佳列?

天真的做法

我发现它很快就可以按每列分类

sortedDatasets = []
for i in range(1,len(dataset[0]):
    sortedDatasets.append(sorted(dataset,key=lambda x: x[i]))
Run Code Online (Sandbox Code Playgroud)

但是这里出现了滞后的部分:我们可以从这里继续for loop为每个已排序的数据集做一个,并计算连续的元素但是当处理for loopspython时非常慢.

现在我的问题是:有没有比这种天真的方法更快的方法,甚至可能有这些2D容器的内置函数?


更新:

更准确地说,范围的含义可以通过这种伪算法来描述 - 这包括在以下情况下递增current value == next value:

if nextValue > current Value +1: 
     {reset counter} 
else: 
     {increment counter}
Run Code Online (Sandbox Code Playgroud)

python arrays sorting matrix dataset

1
推荐指数
1
解决办法
382
查看次数

标签 统计

c++ ×3

arrays ×1

c++11 ×1

dataset ×1

find ×1

if-statement ×1

map ×1

matrix ×1

python ×1

set ×1

sorting ×1

unions ×1