如何从数组类中删除元素

时间:2018-11-05 17:47:57

标签: c++ arrays vector iterator

我有数组声明

ifValidationFails

现在我需要在该数组中找到最大值并将其删除。如何使用类数组来实现?


编辑
所以不能修改数组大小,那么我可以在数组中快速移动两个元素吗?

2 个答案:

答案 0 :(得分:4)

无法完成。 std::array具有在编译时确定的固定数量的元素。如果您想要一个支持不断变化的元素数量的容器,则可以使用例如std::vector

答案 1 :(得分:0)

虽然无法从数组中删除元素,但是可以将max元素移动(通过交换)到数组的末尾并保持动态大小。

const unsigned int fixed_size=5;
unsigned int dynamic_size = fixed_size;
std::array<int, fixed_size> myArray;

当找到最大值(将允许您实现此部分)时,将其与动态范围内的最后一个索引交换。并减小动态大小。

std::swap( myArray[dynamic_size-1], myArray[max_index] );
--dynamic_size;

这将遍历数组,但不包括max元素。

for( unsigned int i=0; i<dynamic_size; ++i ) printf( "%u: %d\n", i, myArray[i] );