gpt4 book ai didi

c++ - 将 set_intersection 与动态分配一起使用?

转载 作者:行者123 更新时间:2023-11-28 00:11:16 27 4
gpt4 key购买 nike

我正在阅读有关 set_intersection 的内容,它似乎期望用户提前分配正确数量的空间(或更多),但这不是很奇怪吗?在 C++ 中,您经常使用 std::vector 动态分配空间。为什么 set_intersection 隐式要求提前分配空间,而根据结果数据大小(动态)分配显然更有效?是否希望在事先知道交集大小的情况下最大化性能?不知道交点大小的常见情况如何?

是否有任何“神奇的方法”可以直接为添加到 vector 中的每个元素分配一个槽?

最佳答案

and it appears to expect the user to allocate the correct amount of space (or more) in advance

不,它没有(除非我误解了你的问题):

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

int main()
{
//vectors to intersect
std::vector<int> first{1,2,4,3,8,6,7,5};
std::vector<int> second{3,15,4,16,36};
//they need to be sorted
std::sort(first.begin(), first.end()); //{1,2,3,4,5,6,7,8}
std::sort(second.begin(), second.end()); //{3,4,15,16,36}

//intersection result
std::vector<int> intersection;

//intersecting
std::set_intersection(first.begin(), first.end(),
second.begin(), second.end(),
std::back_inserter(intersection));

//output: 3,4
for(int n : intersection)
std::cout << n << ",";
}

关于c++ - 将 set_intersection 与动态分配一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32992576/

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