gpt4 book ai didi

c++ - 更高效的 STL,如执行操作的方式,

转载 作者:行者123 更新时间:2023-11-28 08:10:11 26 4
gpt4 key购买 nike

是否有更像 STL 的/更有效的方法来执行以下操作

for (int i=0 ; i< N ; ++i)
{
mystruct[i].key = myfunction(xp[i], yp[i], zp[i]);
mystruct[i].index = i;
}

其中 mystruct 是类型

struct KeyIndex
{
int key;
int index;

};

xp、yp、zp 是三个大小为 N 的 float 组

double xp[N];
double yp[N];
double zp[N];

myfunction 是一些具有签名的函数 int myfunction (int, int ,int)

如果我需要将函数 myfunction 更改为用于 STL 目的的仿函数,那没问题。

最佳答案

你可以这样做:

struct TheFunctor
{
double *xp, *yp, *zp;
int idx;

TheFunctor(double * Xp, double * Yp, double * Zp) : xp(Xp), yp(Yp), zp(Zp), idx(0) {};

KeyIndex operator()()
{
KeyIndex ret;
ret.key=idx++;
ret.value=myfunction(*(xp++), *(yp++), *(zp++));
}
};

TheFunctor fn(xp, yp, zp);
std::generate(begin(mystruct), end(mystruct), fn);

但它肯定不会更快,而且无缘无故地更加晦涩。正如评论中所述,这是一个简单的 for 循环更好的情况。

关于c++ - 更高效的 STL,如执行操作的方式,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9344728/

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