小编use*_*134的帖子

double 的多个向量的中位数(c++,向量<向量<double>>)

我有一个包含向量向量的数据结构,每个向量由大约 16000000 个双精度值组成。

我现在想要对这些向量进行中值组合,也就是说,对于每个原始向量,我取位置 i 处的值,计算这些向量的中值,然后将它们存储在位置 i 处的结果向量中。

我已经有了直接的解决方案,但速度慢得令人难以置信:

vector< vector<double> > vectors; //vectors contains the datavectors
vector<double> tmp;
vector<double> result;
vector<double> tmpmedian;
double pixels = 0.0;
double matrixcount = vectors.size();

    tmp = vectors.at(0);
    pixels = tmp.size();
    for (int i = 0; i < pixels; i++) {
        for (int j = 0; j < matrixcount; j++) {
            tmp = vectors.at(j);
            tmpmedian.push_back(tmp.at(i));
        }
        result.push_back(medianOfVector(tmpmedian));
        tmpmedian.clear();
    }

return result;
Run Code Online (Sandbox Code Playgroud)

medianOfVector 看起来像这样:

double result = 0;

if ((vec.size() % 2) != 0) { …
Run Code Online (Sandbox Code Playgroud)

c++ double vector median

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

方法调用后字节大小不正确

我制作了一个最小的工作示例,我有一大段代码.

问题是,sizeof打印第一次调用16,这是正确的大小,而第二次调用只打印8.奇怪的是,它总是打印8,独立于结构的大小,是否只有一个值或10个值.

struct test_struct
{
    int32_t val1;
    int32_t val2;
    int32_t val3;
    int32_t val4;
};

unsigned char * StructToChar(test_struct structy)
{
    unsigned char returnval[sizeof(structy)];
    memcpy(returnval, &structy, sizeof(structy));
    return returnval;
}

int main()
{
    test_struct sendstruct = {};
    unsigned char *test_array = StructToChar(sendstruct);

    unsigned char returnval[sizeof(sendstruct)];
    memcpy(returnval, &sendstruct, sizeof(sendstruct));

    printf("%d\n", sizeof(returnval));
    printf("%d\n", sizeof(test_array));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ arrays char memcpy

-3
推荐指数
1
解决办法
44
查看次数

标签 统计

c++ ×2

arrays ×1

c ×1

char ×1

double ×1

median ×1

memcpy ×1

vector ×1