tr1 ::array в C удаление всех элементов

#c #stl

#c #stl

Вопрос:

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

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

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

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

Спасибо

Ответ №1:

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

Комментарии:

1. Спасибо. чего я действительно хотел, так это «очистить» информацию внутри массива, сохранив тот же размер. Теперь я понимаю, почему очистка / удаление не будет работать. Все, что мне нужно, это a.assign(0)

Ответ №2:

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

Ответ №3:

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

 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;
  

Ответ №4:

вы можете удалить определенную информацию об индексе, если хотите!

 for(int i=0;i<n;i  )                                     //for deletion
        {
            if(arr[i]==_delete)
            {   
                arr[i]=arr[i 1];
               --n;
            }
        }
  

Комментарии:

1. Этому вопросу 8 лет, и на него уже был дан ответ. Также ваш ответ не добавляет никакого значения, которое уже предоставлено @fastcall22