gpt4 book ai didi

C++ 根据 std::vector 的一些值创建一个新数组?

转载 作者:行者123 更新时间:2023-11-28 00:48:54 25 4
gpt4 key购买 nike

我知道我在这里做的是非常错误的:

void Example( void )
{
// DECLARE LOCAL VARIABLES
::UINT nPosition = 5;
::UINT nLength = 5;
std::vector< ::UINT >vn_VectorA;
::UINT *an_ArrayA = new ::UINT[ nLength ];

// FILL vn_VectorA WITH DECIMAL VALUE OF "HelloWorld!!!"
// I KNOW THIS IS AN UGLY WAY OF DOING IT. BUT FOR DEMONSTRATION PURPOSES,
// I CAN CARELESS.
vn_VectorA.push_back( 72 ); // H
vn_VectorA.push_back( 101 ); // e
vn_VectorA.push_back( 108 ); // l
vn_VectorA.push_back( 108 ); // l
vn_VectorA.push_back( 111 ); // o
vn_VectorA.push_back( 87 ); // W
vn_VectorA.push_back( 111 ); // o
vn_VectorA.push_back( 114 ); // r
vn_VectorA.push_back( 108 ); // l
vn_VectorA.push_back( 100 ); // d
vn_VectorA.push_back( 33 ); // !
vn_VectorA.push_back( 33 ); // !
vn_VectorA.push_back( 33 ); // !

// Copy the desire values of vn_VectorA to an_ArrayA
for( ::UINT nCopyIndex = nPosition, nArrayAIndex = 0; nArrayAIndex != nLength; nArrayAIndex ++, nCopyIndex ++ )
{
an_ArrayA[ nArrayAIndex ] = vn_VectorA[ nCopyIndex ];
#ifdef DEBUG
std::cout << an_ArrayA[ nArrayAIndex ] << ' ';
#endif // DEBUG
}
};

这是我用来复制 std::vector 的某些值的方法:

    // Copy the desire values of vn_VectorA to an_ArrayA
for( ::UINT nCopyIndex = nPosition, nArrayAIndex = 0; nArrayAIndex != nLength; nArrayAIndex ++, nCopyIndex ++ )
{
an_ArrayA[ nArrayAIndex ] = vn_VectorA[ nCopyIndex ];
#ifdef DEBUG
std::cout << an_ArrayA[ nArrayAIndex ] << ' ';
#endif // DEBUG
}

运行代码后,它应该打印:87 111 114 108 100

那么,我应该怎么做呢???

最佳答案

为什么不使用 std::copy?

std::copy(&*vn_Vector.begin() + nPosition, &*vn_Vector.end(), an_ArrayA);

请注意,我只是取消引用 vn_Vector.end(),因此它与 &*vn_Vector.begin() + nPosition 具有相同的类型。

关于C++ 根据 std::vector 的一些值创建一个新数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15076710/

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