gpt4 book ai didi

c++ - C++ 中的逐元素操作

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:09 26 4
gpt4 key购买 nike

是否有一个预先存在的库可以让我创建具有以下属性的类数组对象:

  1. 运行时大小规范(在实例化时选择,之后不会增长或缩小)
  2. 运算符重载以执行元素明智的操作(即 c=a+b 将产生一个 vector c with c[i]=a[i] +b[i] 用于所有 i,同样适用于 *-/,等等)
  3. 一组很好的按元素操作的函数,例如 x=sqrt(vec) 将包含元素 x[i]=sqrt(vec[i])>/li>
  4. 提供“汇总”函数,例如sum(vec)mean(vec)
  5. (可选)可以将操作发送到 GPU 进行处理。

基本上类似于数组在 Fortran 中的工作方式,隐藏了所有实现。目前我正在使用 STL 中的 vector 并手动重载运算符,但我觉得这可能是一个已解决的问题。

最佳答案

在标准库的尘土飞扬的角落里,早已被所有人遗忘的是一个名为 valarray 的类。查找它,看看它是否适合您的需求。

来自 manual page at cppreference.com :

std::valarray is the class for representing and manipulating arrays of values. It supports element-wise mathematical operations and various forms of generalized subscript operators, slicing and indirect access.

用于说明的代码片段:

#include <valarray>
#include <algorithm>
#include <iterator>
#include <iostream>

int main()
{
std::valarray<int> a { 1, 2, 3, 4, 5};
std::valarray<int> b = a;
std::valarray<int> c = a + b;
std::copy(begin(c), end(c),
std::ostream_iterator<int>(std::cout, " "));
}

输出:2 4 6 8 10

关于c++ - C++ 中的逐元素操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20457452/

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