很抱歉这个菜鸟问题,但是举例来说,我已经有一个用 C++ 编写的 Excel 加载项,它接受一个数字并返回数字的平方(比如 inputNum 和 outputNum,其中 outputNum = inputNum^2)和现在我需要修改函数,使输入是一个 1xn vector ,输出是一个大小相同且数字平方的 vector ,我需要修改什么才能让它工作?举例来说,我是否需要将输入更改为指针,因为 C++ 不会直接将 vector 作为 native 类型(与原始 square 函数中的 double 不同)。
谢谢!
最佳答案
std::transform
函数是执行此操作的好方法:
#include <vector>
#include <algorithm>
#include <iostream>
double processElement(double e) {
return e * e;
}
std::vector<double> processAllElements(const std::vector<double>& in) {
// The output vector must be constructed to be the same size as the input.
std::vector<double> out(in.size(), 0);
// Process each element in the input vector into the output vector.
// (input is unchanged)
std::transform(in.begin(), in.end(), out.begin(), &processElement);
return out;
}
int main() {
std::vector<double> in;
in.push_back(1);
in.push_back(2);
std::vector<double> out = processAllElements(in);
std::cout << out[0] << "," << out[1];
}
如果您正在处理指向值缓冲区的原始指针,您仍然可以使用 std::transform
int main() {
const int n = 3;
double in[] = {1,2,3};
double out[n];
std::transform(in, in+n, out, &processElement);
std::cout << out[0] << "," << out[1];
}
但是如果在编译时不知道你的 vector 大小,你最好使用 std::vector 来为你管理内存。
关于C++ - 传入一个 vector 并返回一个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18933791/