Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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++ 从te数组函数中删除元素_C++_Algorithm_Visual C++_Visual C++ 2010 - Fatal编程技术网

C++ 从te数组函数中删除元素

C++ 从te数组函数中删除元素,c++,algorithm,visual-c++,visual-c++-2010,C++,Algorithm,Visual C++,Visual C++ 2010,是否有任何已实现的函数具有initialArray、SizeFinitialarray、outArray和SizeFoutarray参数,在创建精确元素大小的新数组后,获取一个数组并移除特定元素,如下所示: void removeElement(int *initialArray, int sizeOfInitialArray, int *& outArray, int & sizeOfOutArray) { // some code here } 我知道我记

是否有任何已实现的函数具有initialArray、SizeFinitialarray、outArray和SizeFoutarray参数,在创建精确元素大小的新数组后,获取一个数组并移除特定元素,如下所示:

void removeElement(int *initialArray, int sizeOfInitialArray, int *& outArray, int & sizeOfOutArray)
 {
       // some code here
 }
我知道我记得有一个函数精确地处理我想要的代码,我忘记了那个函数的名字

提前感谢您的努力。

请查看stl。它将就地处理,然后您可以创建一个新阵列并返回

未经测试!完整的代码将被删除

#include <algorithm>
void removeElement(int *initialArray, int sizeOfInitialArray, int ValueToBeRemoved, int      *& outArray, int & sizeOfOutArray)
{
 int* endOfArray = initialArray+sizeOfInitialArray;
 endOfArray = remove(initialArray,endOfArray,ValueToBeRemoved);
 sizeOfOutArray = (endOfArray - initialArray);
 outArray = new int[sizeOfOutArray];
 memcpy(outArray,initialArray,(endOfArray - initialArray)*sizeof(int));
}
#包括
void removeElement(int*initialArray、int-SizeOfinitiarray、int-ValueToBeRemoved、int*&outArray、int&sizeOfOutArray)
{
int*endOfArray=initialArray+sizeOfInitialArray;
endOfArray=删除(初始数组、endOfArray、ValueToBeRemoved);
sizeofutarray=(endOfArray-initialArray);
outArray=newint[sizeofutarray];
memcpy(outArray,initialArray,(endOfArray-initialArray)*sizeof(int));
}

您可以使用擦除-删除习惯用法

#include <algorithm>
#include <vector>
#include <iostream>
#include <iterator>

bool f (int value) { return value % 2; }

int main()
{
    std::vector<int> v = { 10, 11, 2, 3, -1 };
    v.erase(std::remove_if(v.begin(), v.end(), f), v.end());
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " ")); 
}
#包括
#包括
#包括
#包括
bool f(int值){返回值%2;}
int main()
{
向量v={10,11,2,3,-1};
v、 擦除(std::remove_if(v.begin(),v.end(),f),v.end());
std::copy(v.begin()、v.end()、std::ostream_迭代器(std::cout,“”);
}

如果我没弄错的话

签名不提供要删除的元素。我不知道有任何标准功能可以满足这一(相当具体的)要求。但是,如果您只是使用
std::vector
自己做这件事就很简单了。不,使用remove和realloc更适合我的情况,但无论如何还是要感谢Charles!)你可能在想算法。很好,只是让我用完全不同的方式思考!谢谢,赛米。