0

是否有任何已经实现的函数具有 initialArray、sizeOfInitialArray、outArray 和 sizeOfOutArray 参数,在创建精确元素大小的新数组后,采用一个数组并删除特定元素,如下所示:

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

我知道我记得有一些函数完全按照我的意愿处理代码,买了我忘记了那个函数的名称。

提前感谢您的努力。

4

2 回答 2

0

请参阅从 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));
}
于 2012-04-08T15:07:37.573 回答
0

你可以使用擦除删除成语

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

如果我理解正确

于 2012-04-08T15:14:31.280 回答