给定一个整数数组，编写一个函数来移动所有0到数组的末尾，同时保持非零元素的相对顺序。
```
[0,1,0,3,12]
```
可以使用两个指针来实现，一个指针用于遍历数组，另一个指针用于记录非零元素的位置。遍历完整个数组后，利用第二个指针将后面的位置全部置为0即可。
示例代码如下：
```
void moveZeroes(vector<int>& nums) {
    int j = 0;  // 记录非零元素的位置
    for (int i = 0; i < nums.size(); i++) {
        if (nums[i] != 0) {  // 如果是非零元素
            nums[j++] = nums[i];
        }
    }
    for (int i = j; i < nums.size(); i++) {
        nums[i] = 0;  // 将后面的位置全部置为0
    }
}
```