【发布时间】:2021-11-09 22:15:37
【问题描述】:
下面代码中Insert方法的正确实现是什么?
#include <ranges>
#include <vector>
#include <set>
template <std::ranges::range Range>
class Processor
{
public:
using T = std::ranges::range_value_t<Range>;
void Insert(Range range, T val)
{
//add val into range
}
};
int main()
{
std::vector<int> v;
Processor<std::vector<int>> p;
p.Insert(v, 5);
std::set<int> set;
Processor<std::set<int>> p1;
p.Insert(set, 5);
return 0;
}
是否可以使用相同的代码插入vector 和set? (插入vector可能是push_back)
【问题讨论】:
-
在您的
std::vector中插入项目是否重要? -
@DrewDormann 是的,应该插入到
vector的末尾 -
上次我检查的范围是适配器,因此是视图,它们不会修改任何内容...您需要插入容器。
-
@Mgetz
std::ranges::output_range比是什么? -
@AlexeyStarinsky 所以我能够让
std::ranges::output_range在godbolt 上工作,但它没有插入......它正在替换。您不能插入范围,只需替换它的部分。我打算将其放入答案中,但这不是对所提问题的答案。