#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