0

initialArray、sizeOfInitialArray、outArray、およびsizeOfOutArrayパラメーターを持ち、正確な要素サイズの新しい配列を作成した後、1つの配列を取り、特定の要素を削除する、すでに実装されている関数はありますか?

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

コードを正確に処理する関数があったことを覚えています。その関数の名前を忘れてしまいました。

よろしくお願いします。

4

2 に答える 2

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 に答える
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 に答える