小编Por*_*9II的帖子

Range-v3运算符重载以编写更短的代码

对于我的矩阵类,我想在range-v3视图上进行某种运算符重载(可能使用表达式模板)+ - / * %.例如,如果我想获得两列总和的视图,我想写

col_1 + col_2
Run Code Online (Sandbox Code Playgroud)

代替

rv::zip_with([](auto c1, auto c2) {return c1 + c2;}, col_1, col_2);
Run Code Online (Sandbox Code Playgroud)

可能会使用本文中的一些想法来避免构造太多的临时工.这是我想写的代码:

//simple example
//what I want to write
auto rangeview =    col_1 + col_2;
//what I can write
auto rangeview =    rv::zip_with([](auto c1, auto c2) {
                        return c1 + c2;
                    }, col_1, col_2);


//itermediate
//what I want to write
auto rangeview =    col_1 + col_2 + col_3;
//what I can write
auto rangeview =    rv::zip_with([](auto c1, auto …
Run Code Online (Sandbox Code Playgroud)

c++ range-v3 c++17

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

如何使用range-v3库从std :: vector获取列视图和行视图?

将7x5矩阵展平为std :: vector,我想使用Eric Niebler的range-v3库获取列和行的视图.到目前为止,我管理(改进的空间)以获得单行,单列和连接行的视图.

请参阅:https://wandbox.org/permlink/8o4RgSucF3zSNuPN

std::vector<int> numbers = {
    00, 01, 02, 03, 04,
    10, 11, 12, 13, 14,
    20, 21, 22, 23, 24,
    30, 31, 32, 33, 34,
    40, 41, 42, 43, 44,
    50, 51, 52, 53, 54,
    60, 61, 62, 63, 64,
};
const size_t n = 5;//number of columns

//Row_3 = {30, 31, 32, 33, 34}
auto Row_3 = numbers | GetRow(3, n);
std::cout << Row_3 << std::endl;

//Col_2 = {02, 12, 22, 32, …
Run Code Online (Sandbox Code Playgroud)

c++ range-v3

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

std::partial_sum 和 Kahan 算法

在 C++11 中,我想使用 std::partial_sum 计算向量的部分和。

std::vector<double> vec = {-1.0, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1};
std::partial_sum(vec.begin(), vec.end(), vec.begin());
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于双精度的舍入误差以及 0.1 没有精确表示为双精度,结果向量的最后一个条目是 1.38778E-16。

vec = {-1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1, 1.38778E-16};
Run Code Online (Sandbox Code Playgroud)

是否有机会在 std::partial_sum 中使用 Kahan 算法来减少舍入误差并获得更小的误差 - 类似于

std::partial_sum(vec.begin(), vec.end(), vec.begin(), KahanSum);
Run Code Online (Sandbox Code Playgroud)

algorithm stl c++11

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

标签 统计

c++ ×2

range-v3 ×2

algorithm ×1

c++11 ×1

c++17 ×1

stl ×1