c++ - 如何在不复制的情况下将只读 vector <int>传递给作为pair<int,int> vector 一部分的函数

标签 c++ vector

我有一个 vector 对让我们说 int秒。现在有一个图书馆需要 const vector<int>&作为其功能之一的输入的引用。有没有办法在不复制数据的情况下将适当的 vector 传递给函数?因为在 SO 上提取 vector 的所有解决方案总是处理我需要提取和复制部分 vector 的场景,但我不想复制,因为我只将子 vector 作为只读常量传递。

注意:我无法更改正在调用的函数(需要 const vector<int>& ),因为它不是我代码的一部分。

编辑: 由于我不清楚我实际想要提取的内容,我将尝试澄清。我有一个 vector<pair<A,B>>想通过vector<A> .

最佳答案

没有。 std::vector<std::pair<int>>std::vector<int>是完全不相关的类型。您不能在函数需要另一个的地方传递一个。您将必须复制数据。

这有点令人难过,因为对的 vector 必须有一个相邻对的数组,而实际上,这些对只包含相邻的 int。 s,所以你需要的内存布局就在那里。但事实是,没有办法得到它。

编辑 我从评论中看到它更像是 std::pair<int, char*>在这种情况下你真的被困住了。

我认为“写你自己的容器”可以公开一个 std::vector<int> const&用于此其他功能,或只是复制,是您最好的选择。

关于c++ - 如何在不复制的情况下将只读 vector <int>传递给作为pair<int,int> vector 一部分的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34772371/

相关文章:

c++ - 在 xcode 的调试器中查看 IL2CPP 的 string_t 的内容

c++ - 字符到整数 - C++

c++ - GDB:包含 STL 容器的 Pretty-Print 类

c - 调用函数时出错(指针和 vector )

c++ - 将 mat vector 转换为 Mat 文件以便使用 opencv svm

c++ - 在 g++ 编译中找不到 SDL.h

c++ - C++ 中的 const vector 引用参数

C++ - 使用类参数定义 vector 大小

矢量背景图像与光栅背景图像

c++ - 函数模板的隐式实例化