A[5] 有元素 {a,b,c,d,e}
A[2] 变为空,将所有内容向右移动的最佳方法是什么,以便它们部分填充数组,将空白空间留在最左边。我知道如何使用逻辑和循环来做到这一点,我想知道是否有任何命令可以为我做到这一点?
C 风格的数组没有“空”元素的概念。该元素将始终具有一个值。您可能会决定某个值表示一个空元素,但这取决于您。如果您的“空”占位符值被命名为empty
,您可以执行以下操作:
auto empty_it = std::find(std::begin(arr), std::end(arr), empty);
std::rotate(empty_it, empty_it + 1, std::end(arr));
这会将第一个空元素移动到数组的后面。
最好使用std::vector
,std::list
或其他标准库容器。它们提供了从容器中移除元素的功能,而您不必关心移动元素。例如:
std::vector<int> v = {0, 1, 2, 3, 4, 5, 6};
v.erase(v.begin() + 3);
for (auto& x : v) {
std::cout << x << " ";
}
这将打印0 1 2 4 5 6
. 3
已从容器中取出。