Элементное добавление кортежей

Вы можете использовать новое размещение следующим образом:

class Car {
    int _no;
public:
    Car( int no ) :_no( no ) {
    }
};

int main() {
    void* raw_memory = operator new[]( NUM_CARS * sizeof( Car ) );
    Car* ptr = static_cast<Car*>( raw_memory );
    for( int i = 0; i < NUM_CARS; ++i ) {
        new( &ptr[i] )Car( i );
    }
    // destruct in inverse order    
    for( int i = NUM_CARS - 1; i >= 0; --i ) {
        ptr[i].~Car();
    }
    operator delete[]( raw_memory );
    return 0;
}

Ссылка из более эффективного C ++ - Scott Meyers: Пункт 4 - Избегайте бесполезных конструкторов по умолчанию

30
задан Jim Fasarakis Hilliard 12 June 2018 в 12:03
поделиться