如何使用c++删除数组中的一些值
How to delete some values in an array using c++
我有一个系统,可以自动读取公司员工访问卡上存储的信息。这些信息存储在一个数组中。当读卡器不起作用时,员工必须在读卡器附近的密码板上输入自己的姓名和密码才能进入大楼,读卡器将自动创建信息存储在阵列中。数组的第三个第一个单元格总是用正确的值填充,其余单元格用0填充。我的工作是访问这个数组,并删除第三个元素之后的所有不相关的零,即使它在第三个元件之前存在一个0,这必须保持。
我有以下代码:
#include <iostream>
#include <string>
using namespace std;
int main(){
int const Taille=5;
int Track2[Taille], i;
Track2[0]=1;
Track2[1]=0;
Track2[2]=3;
Track2[3]=0;
Track2[4]=0;
cout<<"voici le contenu du tableau: n";
for(i=0;i<Taille;i++){
if(Track2[i]!=0){
cout<<"Track2["<<i<<"]= "<<Track2[i]<<"n";
}
}
return 0;
}
当执行此操作时,我得到以下结果:voici le contentu du tableau:Track2[0]=1 Track2[2]=3我想得到这样的结果:voici le conteu du tableau:Track2[0]=1 Track2[1]=0 Track2[2]=3这意味着,只有在我的数组的tird元素(此处为Track2[2])之后=0的值必须从我的数组中删除。我该怎么做?感谢
如果使用C++,请使用std::vector。std::vector
有erase
方法,使用它。
#include <iostream>
#include <vector>
int main ()
{
std::vector<int> myvector;
// set some values (from 1 to 10)
for (int i=1; i<=10; i++) myvector.push_back(i);
// erase the 6th element
myvector.erase (myvector.begin()+5);
// erase the first 3 elements:
myvector.erase (myvector.begin(),myvector.begin()+3);
std::cout << "myvector contains:";
for (unsigned i=0; i<myvector.size(); ++i)
std::cout << ' ' << myvector[i];
std::cout << 'n';
return 0;
}
sts::vector::擦除文档。
您的程序不会擦除数组的部分,它不应该打印数组的最后一部分(如果我读对了您的问题)。
为此,您可以保留另一个变量,其中包含最后一个可用的索引,并循环直到达到该索引为止。
如果您真的想从数组中擦除条目,我建议您改用std::vector
。
从数组中删除并不容易,因为数组的大小是固定的(例如,5),这是在创建数组时确定的。
与其删除元素,不如在同一数组中向下复制元素,以替换您不想要的元素,例如:
// Move element 2 to element 1, erasing the old element 1
Track[1] = Track[2];
Track[2] = 0;
另一种解决方案是使用std::矢量而不是数组。如果Track2是一个向量,则可以使用vector::erase方法删除元素。
另一种解决方案是将元素复制到较小的阵列中,例如:
// New temporary smaller array
int Temp[2];
// Copy elements we want to keep
Temp[0] = Track2[0];
Temp[1] = Track2[2];
有一些方法可以从数组中删除元素,但您找不到一个函数可以删除末尾所有为零的元素。
你需要自己解决这个问题。您需要的是找到数组的长度,直到最后一个非零元素。你可以这样做,但向后遍历数组:
int length;
for(length=Taille; i>=0; --length) {
if (Track2[index] != 0) {
break;
}
}
length
将具有数组的长度,您可以将其用作打印数组的上限
- 如何在动态数组上使用搜索函数
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 在 C++ 中的数组上使用阶乘函数
- 如果我在字符数组上使用 close() 会发生什么?
- "p"数组如何使用 std::normal_distribution 存储以下代码中的值C++?
- 如何在使用 make_unique<T[]>() 制作的模板类型数组上使用 std::fill?
- 如何将 std::find() 与 2d std: 数组一起使用?
- 创建整数的 2D 数组,该数组将使用两个函数用随机数填充矩阵.我做错了什么?
- 如何从文件中读取数字并在数组中使用它们?
- 是否可以在数组上使用const_cast来更改元素?
- 在缓冲区/数组中使用颜色结构
- 将 unique_ptr<std::vector> 与 c 样式数组结合使用
- 在结构数组上使用 c++ std::copy
- 数组中使用 int 中的位的不同元素数
- 如何修复将传输到 java 的 2d 数组代码使用 JNI
- 正在使用C 三元运算符中的字符串常数,一种无效的非效率数组的使用
- 在数组中使用C++中的哈希表复制数组中的元素
- 将 find_if() 与数组一起使用的代码段中出错
- C 将1D动态数组施放到2D数组以使用常规索引(例如ARR [i] [J])
- 如何在数组中使用结构化绑定作为ARG传递给某些函数