Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用c++;_C++ - Fatal编程技术网

C++ 如何使用c++;

C++ 如何使用c++;,c++,C++,我有一个系统,可以自动读取存储在公司员工出入卡上的信息。这些信息存储在一个数组中。当读卡器无法工作时,员工必须在读卡器附近的键盘上输入自己的姓名和Pin才能进入大楼,读卡器将自动创建信息以存储在阵列中。数组的前三个单元格始终填充正确的值,其余单元格始终填充0。我的工作是访问这个数组并删除第三个元素之后所有不相关的零,即使它在第三个元素之前存在一个0,这必须保留 我有以下代码: #include <iostream> #include <string>

我有一个系统,可以自动读取存储在公司员工出入卡上的信息。这些信息存储在一个数组中。当读卡器无法工作时,员工必须在读卡器附近的键盘上输入自己的姓名和Pin才能进入大楼,读卡器将自动创建信息以存储在阵列中。数组的前三个单元格始终填充正确的值,其余单元格始终填充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;  
    }  
#包括
#包括
使用名称空间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())使你的代码适应我的练习,它给了我预期的结果。