考虑以下代码。我想做的是从提供的值数组初始化一个指针数组。我试图找出将这些值复制到指针中的最佳方法,并以 C++11 的方式进行。我正在使用 VS2010 编译此代码。
真正困扰我的部分是必须使用外部“i”来获取指针数组的正确索引。我考虑过为此使用 std::array ,但我在使用 std::algorithms (如 for_each )并让它在 VS2010 下编译时遇到了很多麻烦。那可能只是用户错误。
如果有人可以向我展示正确编译 VS2010 的语法,我愿意使用 std::array。在 stackoverflow 或其他地方找到 std::array 的好例子时,我运气不佳。我也不完全确定它是否会解决外部“i”的问题。
template <int ArraySize>
class testWithArray
{
public:
testWithArray(int* myarray)
{
std::for_each(ArrayOfPointers_, ArrayOfPointers_ + ArraySize, [] (int* arrayElem)
{
arrayElem = new int (0);
});
int i = 0;
std::for_each(myarray, myarray + ArraySize, [&] (int arrayElem)
{
*(ArrayOfPointers_[i++]) = arrayElem;
});
}
private:
int* ArrayOfPointers_[ArraySize];
};
void main()
{
int plainArray[5] = {0,1,2,3,4};
testWithArray<5> myArrayClass(plainArray);
}