将整数数组转换为C ++中位集表示形式的最佳方法?

问题描述 投票:1回答:1

我已经在该主题上看到过类似的问题,但是我对编程还比较陌生,无法理解解决方案中使用的某些语言。

假设我有2个有限集合A,B,它们表示为数组,其中:

int A[2] = {1, 3};
int B[2] = {1, 2};

我想要代表A和B的位集(列向量V)。>

    v1 v2
(1) 1, 1
(2) 0, 1
(3) 1, 0

这样,我可以轻松地对行(k)求和,并获得我的所有集合A_1至A_n中值k的出现次数。

我正在寻找最快的方法。我可以粗略地想象一下,如何首先初始化位向量矩阵(将每个值设置为0),然后遍历每个集合A_i,将矩阵的相应条目设置为1,但是这种解决方案似乎没用,因为我仍然必须遍历每个集合A_i中的每个元素。

[我试图避免通过遍历每个集合的每个元素来取而代之的是通过对行的位求和来获得外观计数,但是我不知道如何以省时的方式优雅地进行此转换。

动机:我正在尝试实现ID3决策树算法,并试图使用位向量来计算用于熵计算的标签比例。

我已经在该主题上看到了一些类似的问题,但是我对编程还比较陌生,无法理解解决方案中使用的某些语言。假设我有2个有限集A,B ...

c++ machine-learning data-mining bitset bitvector
1个回答
0
投票
int bitsetA[3] = {0, 0, 0};
for (unsigned int i = 0; i != 2; ++i) {
    bitsetA[A[i] - 1]++;
}
© www.soinside.com 2019 - 2024. All rights reserved.