是否有任何已经实现的函数具有initialArray,sizeOfInitialArray,outArray和sizeOfOutArray参数,在创建精确元素大小的新数组后,取一个数组并删除特定元素,如下所示:
void removeElement(int *initialArray, int sizeOfInitialArray, int *& outArray, int & sizeOfOutArray)
{
// some code here
}
我知道我记得有一些功能正是我想要的处理代码,买我忘了那个功能的名字。
提前感谢您的努力。
答案 0 :(得分:0)
请参阅stl..it中的remove将进行处理,然后您可以创建一个新数组并返回..
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));
}
答案 1 :(得分:0)
你可以使用erase-remove idiom
#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, " "));
}
如果我理解你的话