如何将元素移动到数组的末尾

How to shift elements to end of the array

我有这个数组:

std::string langs[] = { "C++", "Ada", "Haskell", "Python", "Ada" };

我想写一个函数把K个元素移到最后例如:

k="Ada";

{ "C++", "Haskell", "Python", "Ada", "Ada" };

我写了这个但它不起作用:

void moved(T e) 
{ 

    istd::vector<int> indexes;
        for (int i = 0; i < size_array; ++i)
        {
            if (array[i] == e)
            {
                indexes.push_back(i);
            }
        }
        
        for (int j = 0; j < (int)indexes.size(); ++j)
        {
            T temp=e;
            for (int i = indexes[j]; i < deleted_array_size-1; ++i)
            {
                array[i] = array[i + 1];
                std::cout << i << std::endl;
            }
            deleted_array_size--;
            array[deleted_array_size - 1] = temp;
            
        }
} 

如何移动元素?

如果顺序无关紧要,您可以使用 std::partition:

int main()
{
    std::string langs[] = { "C++", "Ada", "Haskell", "Python", "Ada" };
    std::partition(std::begin(langs), std::end(langs), [](auto& lang) {
        return lang != "Ada";
    });
 
    for (auto& str : langs) {
        std::cout << str << std::endl;
    }
}

打印:

C++
Python
Haskell
Ada
Ada

如果排序 重要,您可以使用 std::stable_partition