2012-04-08 65 views
0

删除元素是否有任何已经实施的功能有initialArray,sizeOfInitialArray,outArray和sizeOfOutArray参数,需要一个数组,并删除特定的元素,它创建精确的元件尺寸的新数组,像这样的事情后,如下:从TE阵列功能

void removeElement(int *initialArray, int sizeOfInitialArray, int *& outArray, int & sizeOfOutArray) 
{ 
     // some code here 
} 

我知道我记得有一些函数正好处理代码,因为我想买,我忘了那个函数的名字。

在此先感谢您的努力。

+0

签名不提供要删除的元素。 – dasblinkenlight 2012-04-08 15:06:25

+0

我不知道任何符合这个(相当具体)要求的标准功能。但是如果你只是使用'std :: vector ',你自己做这件事很简单。 – 2012-04-08 15:07:29

+0

nah使用remove和realloc会比较适合我的情况,但无论如何感谢Charles! :) – 2012-04-08 15:11:37

回答

0

请参阅remove从stl..it将就地处理,那么你可以创建一个新的数组并返回..

NotTested!完整的代码将

#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)); 
} 
+0

不错,只是让我以完全不同的方式思考!谢谢,Semih。 – 2012-04-08 15:10:38

0

您可以使用擦除remove惯用法

#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, " ")); 
} 

如果我理解你的权利