gpt4 book ai didi

c++ - 我们如何在 C++ 的类构造函数中初始化 std::vector?

转载 作者:可可西里 更新时间:2023-11-01 18:26:38 26 4
gpt4 key购买 nike

我们如何在 C++ 的类构造函数中初始化 std::vector?

class MyClass
{
public:
MyClass( int p_Var1, int* p_Vector ) : Var1( p_Var1 ) //, Initialize std::vector - MyVector with p_Vector
{
};
~MyClass( void );
private:
int Var1;
std::vector< int > MyVector;
};

最佳答案

首先,myVector 会被初始化,即使你什么都不做,因为它有非平凡的构造函数。如果你想给定一个指向 int 序列的指针来初始化它,您将还得知道长度。如果你有一个指针和长度,你可以这样做:

: myVector( pInitialValues, pInitialValues + length )

或者(更惯用的),你会让调用者做添加,并让构造函数采用两个指针,开始和结束:

: myVector( pBegin, pEnd )

(如果调用者使用的是 C++11,他可以从使用 std::begin()std::end() 的 C 风格数组。)

编辑:

只是为了让它非常清楚:只是一个 int* 不提供足够的信息来做任何事情。 int* 指向C 样式数组的第一个元素;你还需要一些方法找到终点:元素计数、终点指针等。在特殊情况,可以使用其他技术;即如果 C 风格数组只包含非负数,你可以使用 -1 作为一个 sentinal,类似 : myVector( pVector, std::find(
pVector,NULL,-1 ) )
。然而,这些都是特殊情况。

关于c++ - 我们如何在 C++ 的类构造函数中初始化 std::vector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15107580/

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