我有一个 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/