我有数组声明
ifValidationFails
现在我需要在该数组中找到最大值并将其删除。如何使用类数组来实现?
编辑
所以不能修改数组大小,那么我可以在数组中快速移动两个元素吗?
答案 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] );