tr1 :: array в C ++ удаляет все элементы - PullRequest
2 голосов
/ 14 октября 2011

как удалить все элементы массива std :: tr1 ::?

Например, я определил следующий массив.

std::tr1::array <int, 5> a = { 1, 2, 3, 4, 5}

Как и в векторах, я ищу такой метод, как a.clear() или a.erase(), но не могу найти один для массивов.

Спасибо

Ответы [ 3 ]

3 голосов
/ 14 октября 2011

массивы имеют статический размер, вы не можете ни добавлять, ни удалять элементы, для этого и нужен вектор.

0 голосов
/ 14 октября 2011

Массивы имеют фиксированный размер. Однако вы можете отслеживать количество элементов, используемых в массиве, для вектора с фиксированным максимальным размером:

array<int,5> arr;
int number_of_elements = 0;

for ( int i = 0; i < 4; ++i ) {
    // arr.push_back(i)
    arr[number_of_elements] = i;
    number_of_elements++;
}

// arr.erase( arr.begin() + 2 )
for ( int i = 2; i < number_of_elements-1; ++i )
    arr[i] = arr[i+1];
number_of_elements--;

// arr.clear()
number_of_elements = 0;
0 голосов
/ 14 октября 2011

После определения размер массива не может быть изменен.

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