CLe*_*ner 7 c++ constructor stdvector
我们如何在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;
};
Run Code Online (Sandbox Code Playgroud)
Jam*_*nze 11
首先,myVector即使你什么都不做,也会被初始化,因为它有非平凡的构造函数.如果你想在给定指向序列的指针的情况下初始化它int,你还必须知道它的长度.如果你有一个指针和长度,你可以这样做:
: myVector( pInitialValues, pInitialValues + length )
Run Code Online (Sandbox Code Playgroud)
或者(并且更具惯用性),您将让调用者执行添加,并让构造函数采用两个指针,即开始和结束:
: myVector( pBegin, pEnd )
Run Code Online (Sandbox Code Playgroud)
(如果调用者正在使用C++ 11,他可以使用std::begin()和从C样式数组中获取这些std::end().)
编辑:
只是为了说清楚:只是一个int*没有提供足够的信息来做任何事情.一个int*点,一个C风格阵列的第一元件; 你还需要一些方法来找到结尾:元素计数,结束指针等.在特殊情况下,可以使用其他技术; 也就是说,如果C样式数组只包含非负数,你可以使用它-1作为一个sentinal,等等: myVector( pVector, std::find(
pVector, NULL, -1 ) ).然而,这些是特殊情况.
| 归档时间: |
|
| 查看次数: |
16472 次 |
| 最近记录: |