Lin*_*les 1 c++ arrays for-loop
我在C++数组中操作数据时遇到了另一个问题.我现在想通过从中删除所有零来抽取数组.
例如,在我拥有array[4] = {1,2,0,0,4}它之前说它会成为array[3] = {1,2,4}.
我知道我需要使用for循环来遍历存储主数据的数组,并且我很可能需要初始化一个新数组来存储抽取数据,但我不太清楚如何去做.
您无法调整普通数组的大小,因为它是静态分配的.因此,使用vector标准库(STL)可能更好.以这种方式,您不需要创建新数组.实际上,除非有充分的理由,否则通常使用std::vector或std::array(在C++ 11中)比普通的C类数组更好.
通过使用vector,您可以执行以下操作:
std::vector<int> v{1,2,0,0,4};
v.erase(
std::remove(v.begin(), v.end(), 0),
v.end());
Run Code Online (Sandbox Code Playgroud)
在擦除零元素之后,向量仍然具有容量5,但是(当然v.size()会如预期的那样返回3).如果你可以使用C++ 11那么你可以进一步:
v.shrink_to_fit();
Run Code Online (Sandbox Code Playgroud)
调用shrink_to_fit减少向量的容量以使其适应其中的实际元素数(示例中为3).这可能会节省内存(特别是如果向量中有许多元素).
| 归档时间: |
|
| 查看次数: |
7091 次 |
| 最近记录: |