Инициализация массивов на конструкторах - PullRequest
0 голосов
/ 21 января 2011

Я пытаюсь конвертировать программу в ООП.Программа работает с несколькими массивами:

int tipoBilletes[9] = { 500,300,200,100,50,20,10,1,2 };
int cantBilletes[9] = {0};

Так что для конвертации я объявил в заголовочном файле это:

int *tipoBilletes;
int *cantBilletes;

и в конструкторе я написал

tipoBilletes = new int[9];
cantBilletes = new int[9];

tipoBilletes[0] = 500;
tipoBilletes[1] = 300;
tipoBilletes[2] = 200;
...

Работает нормально.

Мой вопрос, есть ли способ инициализировать его как в Java?

int[] tipoBilletes = new int[]{ 500,300 };

вместо необходимости устанавливать каждый элемент один за другим?

Ответы [ 2 ]

4 голосов
/ 21 января 2011

Нет, но вам не обязательно писать каждое задание самостоятельно.Другой вариант:

const int TIPO_BILLETES_COUNT = 9;
const int initialData[TIPO_BILLETES_COUNT] = { 500,200,300,100,50,20,10,1,2 };
std::copy(initialData, initialData + TIPO_BILLETES_COUNT, tipoBilletes);

(Обратите внимание, что для этого почти наверняка следует использовать std::vector вместо ручного динамического выделения. Инициализация не отличается от std::vector, хотя послеresize д.)

2 голосов
/ 21 января 2011

Если вы используете std :: vector, вы можете использовать boost :: assign :

#include <vector>
#include <boost/assign/std/vector.hpp>  
//... 
using namespace boost::assign;
std::vector<int> tipoBilletes;
tipoBilletes += 500, 300, 200, 100, 50, 20, 10, 1, 2;

С другой стороны, вы должны рассмотреть возможность использования массива фиксированного размера, если он маленький и постоянного размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...