c++ - 构建一个 vector 作为另一个 vector 的子集而不复制

标签 c++ vector containers move

v 为 vector 。我希望 w 是索引 fromto 之间的 v 的子集。我可以做

std::vector<T> w(v.begin() + from, v.begin() + to);

但是,我不打算在以后使用v。因此,我不需要在 fromto 之间复制数据。我需要创建一个指向 v.begin() + from 并且长度为 to - from 的 vector 。 v 使用的剩余内存应该被释放。请注意,如果它是 v 被重新定义我没问题(如果我想的话,我可以在之后切换到 w)。

这有可能吗?

最佳答案

这应该可以解决 vector 问题。

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> v{ 11, 22, 33, 44, 55, 66, 77, 88, 99 };
    constexpr size_t from = 3;
    constexpr size_t to = 7;

    if(to < v.size() - 1)
        v.erase(v.begin() + to, v.end());

    if(from > 0)
        v.erase(v.begin(), v.begin() + from - 1);

    v.shrink_to_fit();

    for(auto i : v)
        cout << i << ' ';
    cout << endl;
}

关于c++ - 构建一个 vector 作为另一个 vector 的子集而不复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53753821/

相关文章:

c++ - 动态 vector 类容器,但其元素保存其索引?

bash - Docker-如何从同一主机的一个容器调用bash命令到另一个容器?

c++ - 在 C++ 中正确使用 "interfaces"?

c++ - 相似代码检测器

c++ - 置换程序中的 int 限制 (C++)

c++ - string::reserve 的使用

c++ - 使用struct初始化c++ vector 时的构造函数错误

c++ - Intel Xeon Phi 卸载代码 + STL vector

c++ - 从 C++ 函数返回 vector 或数组

c++ - 调用通用方法/将通用功能应用于具有不同类型对象的不同容器