gpt4 book ai didi

c++ - 移动数组元素

转载 作者:行者123 更新时间:2023-11-28 08:21:34 25 4
gpt4 key购买 nike

我已经学到了很多关于数组操作的知识,但我想知道如何在数组中移动元素,我想尝试在数组中再添加一个 sot,并用 0 和移动元素。

最佳答案

首先我想提一下,移动数组中的元素是一个算法代价高昂的问题:它是 O(N),如果你打算经常这样做,你应该考虑使用链表,插入是一个O(1) 操作(但是您失去了索引功能并且需要更多内存来存储数据)。现在执行您一直要求的代码:

#include <iterator>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(int, char**) {
vector<int> rands(5);
generate(rands.begin(), rands.end(), rand);

cout << "Initial array:\n";
copy(rands.begin(), rands.end(), ostream_iterator<int>(cout, "\n"));

vector<int> zeros(3);
fill(zeros.begin(), zeros.end(), 0);

vector<int>::size_type insert_position = 3, insert_count = 2;

// Here's the actual insertion
// insert from other collection:
rands.insert(rands.begin() + insert_position, zeros.begin(), zeros.end());
// insert a value into the beginning:
rands.insert(rands.begin(), insert_count, -1);

cout << "Initial array with inserted elements:\n";
copy(rands.begin(), rands.end(), ostream_iterator<int>(cout, "\n"));
}

所以插入其实是vector的一种方法。调用它会调整 vector 的大小,将元素复制到新的移位位置,然后将元素从其他数据结构复制到新位置。调整 vector 的大小也可能触发新内存块的分配,将旧元素复制到其中并删除旧数组。如果您使用 C 风格的数组而不是 vector ,那么您将不得不自己担心上述所有步骤。

关于c++ - 移动数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5645521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com