2 次元配列に基づいて std::vector を初期化したい Visual Studio 2008 C++03 アプリケーションがあります。
例えば:
#define DATA_SIZE 6
struct Data
{
UINT a;
BYTE b;
BYTE c;
BYTE d;
Data()
: /* initialize all members to 0*/
{
};
explicit Data( const BYTE data[ DATA_SIZE ] )
: a( data[ 0 ] << 16 | data[ 1 ] << 8 | data[ 2 ] ),
b( data[ 3 ] ),
c( data[ 4 ] ),
d( data[ 5 ] )
{
};
};
inline bool operator==( const Data& lhs, const Data& rhs )
{
return /* true if all members are equal */
};
int main( int argc, char* argv[] )
{
const BYTE source[][ DATA_SIZE ] =
{
{ 0x01, 0xfe, 0xaa, 0x01, 0xcc, 0x13 },
{ 0x02, 0xa1, 0x02, 0xbb, 0x02, 0xdd }
}
// how should this be done?
std::vector< Data > data_list( source[ 0 ], source[ countof( source) - 1 ] );
ASSERT( data_list[ 0 ] == Data( source[ 0 ] ) );
ASSERT( data_list[ 1 ] == Data( source[ 1 ] ) );
return 0;
}
配列for
内の各項目を反復処理して呼び出すループなしでこれを行う方法はありますか?data
push_back