C++ 如何使用c++;
我有一个系统,可以自动读取存储在公司员工出入卡上的信息。这些信息存储在一个数组中。当读卡器无法工作时,员工必须在读卡器附近的键盘上输入自己的姓名和Pin才能进入大楼,读卡器将自动创建信息以存储在阵列中。数组的前三个单元格始终填充正确的值,其余单元格始终填充0。我的工作是访问这个数组并删除第三个元素之后所有不相关的零,即使它在第三个元素之前存在一个0,这必须保留 我有以下代码:C++ 如何使用c++;,c++,C++,我有一个系统,可以自动读取存储在公司员工出入卡上的信息。这些信息存储在一个数组中。当读卡器无法工作时,员工必须在读卡器附近的键盘上输入自己的姓名和Pin才能进入大楼,读卡器将自动创建信息以存储在阵列中。数组的前三个单元格始终填充正确的值,其余单元格始终填充0。我的工作是访问这个数组并删除第三个元素之后所有不相关的零,即使它在第三个元素之前存在一个0,这必须保留 我有以下代码: #include <iostream> #include <string>
#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;
}
#包括
#包括
使用名称空间std;
int main(){
int const Taille=5;
int Track2[Taille],i;
Track2[0]=1;
Track2[1]=0;
轨道2[2]=3;
Track2[3]=0;
Track2[4]=0;
如果使用C++,则使用< >代码> STD::vector < /COD>有<代码>擦除< /代码>方法,使用它。< /P>
#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;
}
#包括
#包括
int main()
{
std::vector myvector;
//设置一些值(从1到10)
对于(int i=1;i 使用,如果使用c++。<代码> STD::vector < /代码>有<代码>擦除< /代码>方法,使用它。< /P>
#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;
}
#包括
#包括
int main()
{
std::vector myvector;
//设置一些值(从1到10)
对于(int i=1;i来说,从数组中删除并不容易,因为数组有一个固定的大小(例如,5),这是在创建数组时确定的
不要删除元素,而是在同一数组中向下复制元素以替换不需要的元素,例如:
// Move element 2 to element 1, erasing the old element 1
Track[1] = Track[2];
Track[2] = 0;
// New temporary smaller array
int Temp[2];
// Copy elements we want to keep
Temp[0] = Track2[0];
Temp[1] = Track2[2];
另一种解决方案是使用std::vector而不是数组。如果Track2是一个向量,那么可以使用vector::erase方法删除元素
另一种解决方案是将元素复制到较小的数组中,例如:
// Move element 2 to element 1, erasing the old element 1
Track[1] = Track[2];
Track[2] = 0;
// New temporary smaller array
int Temp[2];
// Copy elements we want to keep
Temp[0] = Track2[0];
Temp[1] = Track2[2];
从数组中删除并不容易,因为数组具有固定的大小(例如,5),这是在创建数组时确定的
不要删除元素,而是在同一数组中向下复制元素以替换不需要的元素,例如:
// Move element 2 to element 1, erasing the old element 1
Track[1] = Track[2];
Track[2] = 0;
// New temporary smaller array
int Temp[2];
// Copy elements we want to keep
Temp[0] = Track2[0];
Temp[1] = Track2[2];
另一种解决方案是使用std::vector而不是数组。如果Track2是一个向量,那么可以使用vector::erase方法删除元素
另一种解决方案是将元素复制到较小的数组中,例如:
// Move element 2 to element 1, erasing the old element 1
Track[1] = Track[2];
Track[2] = 0;
// 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
将具有数组的长度,您可以在打印数组时使用该长度作为上限有从数组中删除元素的方法,但您将找不到删除末尾为零的所有元素的函数
您需要自己处理这个问题。您需要的是找到数组到最后一个非零元素的长度。您可以这样做,但要向后遍历数组:
int length;
for(length=Taille; i>=0; --length) {
if (Track2[index] != 0) {
break;
}
}
length
将具有数组的长度,您可以使用它作为打印数组的上限可以将Track[0]、Track[1]和Track[2]放入另一个数组,如int Track3[2]?可以将Track[0]、Track[1]和Track[2]放入另一个数组,如int Track3[2]好的,我感谢使用一个临时变量,但是当我的数组内容30个单元和我想要保持的时候,它将是很长的,例如,我只想用20个向量。我想用向量来代替。@使用向量代替数组会更习惯于C++。使用数组是一种更老的样式,C代替C++。如果你必须使用数组,那么你就可以使用。uld分阶段进行:1)计算您要保留多少元素2)创建较小的数组3)复制元素。因为较小的数字不是常数,所以需要使用malloc
或new
动态分配较小的数组。如果允许使用,我建议使用vector。好的。我感谢使用临时变量,但当我的数组内容为30时,它会太长单元格和I要保持例如20个第一。我想,我将用向量来尝试。@使用向量代替数组将更为地道的C++。使用数组是一种较旧的样式,C代替C++。如果你必须使用数组,那么你可以分阶段进行:1)计算你想要保留多少元素2)创建更小的数组。3)复制元素。因为较小的数字不是常数,所以您需要使用malloc
或new
动态分配较小的数组。如果允许,我建议使用vector。@Denis感谢您的帮助。我尝试使用vector,并使用Track2.erase使您的代码适应我的练习(Track2.begin()+3,Track2.end())它给了我预期的结果。@丹尼斯谢谢你的帮助。我尝试使用向量,并使用Track2.erase(Track2.begin()+3,Track2.end())使你的代码适应我的练习,它给了我预期的结果。