gpt4 book ai didi

c++ - 在c++中构造围绕中心元素的镜像 vector

转载 作者:行者123 更新时间:2023-12-02 00:46:07 24 4
gpt4 key购买 nike

我有一个 for 循环,它构造一个包含 101 个元素的 vector ,使用(我们称之为方程 1)作为 vector 的前半部分,中心元素使用方程 2,后半部分是 vector 的镜像上半场。

像这样,

double fc = 0.25
const double PI = 3.1415926

// initialise vectors
int M = 50;
int N = 101;

std::vector<double> fltr;
fltr.resize(N);
std::vector<int> mArr;
mArr.resize(N);


// Creating vector mArr of 101 elements, going from -50 to +50
int count;
for(count = 0; count < N; count++)
mArr[count] = count - M;

// using these elements, enter in to equations to form vector 'fltr'
int n;
for(n = 0; n < M+1; n++)

// for elements 0 to 50 --> use equation 1
fltr[n] = (sin((fc*mArr[n])-M))/((mArr[n]-M)*PI);

// for element 51 --> use equation 2
fltr[M] = fc/PI;

这部分代码工作正常并且达到了我的预期,但是对于元素 52 到 101,我想围绕元素 51 进行镜像(使用方程的输出值)

一个基本示例;

1  2  3  4  5  6  0.2  6  5  4  3  2  1

这是我到目前为止所拥有的,但它只输出 0 作为元素:

for(n = N; n > M; n--){
for(i = 0; n < M+1; i++)
fltr[n] = fltr[i];
}

我觉得有一种更简单的方法来镜像 vector 的一部分,但我不确定如何实现。

我希望这些值能够像这样绘制: enter image description here

最佳答案

插入中间元素后,您可以获取到中点的反向迭代器,并通过 std::back_inserter 将该范围复制回 vector 中。在示例中, vector 名为 vec

auto rbeg = vec.rbegin(), rend = vec.rend();
++rbeg;

copy(rbeg, rend, back_inserter(vec));

关于c++ - 在c++中构造围绕中心元素的镜像 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58876916/

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