gpt4 book ai didi

c++ - 如何在 C++ 中正确地静态转换 vector ?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:45 25 4
gpt4 key购买 nike

我有一段代码,在函数的末尾,我需要将数组的所有元素从 int 转换为 double,以便能够在退出函数之前执行最终的 push_back。我现在的代码是:

template <class T, size_t dims> class A {
typedef typename std::array<int, dims> ArrayInt;
typedef typename std::array<double, dims> ArrayDouble;
typedef typename std::vector <ArrayDouble> VectorDouble;

/* ...*/

foo() {
/* ...*/

ArrayInt myArrayInt;
ArrayDouble myArrayDouble;
VectorDouble myVectorDouble;

/* Initialize myArrayInt
Do some other stuff */

for (int i = 0; i < dims; ++i)
myArrayDouble[i] = static_cast<double>(myArrayInt[i]);

myVectorDouble.push_back(myArrayDouble);
}
}

它工作正常,但我对这些线条感觉不舒服:

for (int i = 0; i < dims; ++i) 
myArrayDouble[i] = static_cast<double>(myArrayInt[i]);

有更好的方法吗?

谢谢。

最佳答案

您可以使用算法中的函数。

copy_n :

std::copy_n( myArrayInt.begin(), dims, myArrayDouble.begin() );

或使用 copy :

std::copy( myArrayInt.begin(), myArrayInt.end(), myArrayDouble.begin() );

关于c++ - 如何在 C++ 中正确地静态转换 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22096834/

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