如果我们有
std::set<int > a;
std::vector<std::unordered_set<int>> b;
我们将a
插入b
方法1:我们可以做:
std::set<int > a;
std::vector<std::unordered_set<int>> b (a.begin(), a.end());
方法二,我们不能这样做?
std::set<int > a;
std::vector<std::unordered_set<int>> b;
b.insert(a.begin(), a.end());
这个错误意味着什么?
错误C2664:“标准::_Vector_iterator,标准::equal_to
如果我们需要将b
作为全局unordered_set
来处理,解决方案是什么?
对于方法1,您可以按如下方式操作:
std::set<int> a{ 1, 2, 3, 4, 5};
std::vector<std::unordered_set<int>> b(1, std::unordered_set<int>(a.begin(), a.end()));
现场演示
对于方法二,您可以这样做:
std::set<int> a{ 1, 2, 3, 4, 5};
std::vector<std::unordered_set<int>> b(1);
b[0].insert(a.begin(), a.end());
现场演示
或者可替换地作为:
std::set<int> a{ 1, 2, 3, 4, 5};
std::vector<std::unordered_set<int>> b;
b.push_back({a.begin(), a.end()});
现场演示
或者正如@Ben Voigt所建议的那样:
std::set<int> a{ 1, 2, 3, 4, 5};
std::vector<std::unordered_set<int>> b;
b.emplace_back(a.begin(), a.end());
现场演示
下面的代码显示了我要做的:
我在std::sort中发现了一个bug,特别是在一些QuickSort的实现中,我不知道问题是否出在一般的算法中。 精华: 当元素小于16时,所有的规范都被替换,因为std::sort使用插入排序。 当有17个或更多的元素时,使用快速排序,并从元素数量的对数限制递归深度,但向量在第一次__introsort_loop迭代时有时间恶化。 当有许多相同的元素时,就会出现向量损坏。用无效迭代器替换有效
错误:无法将类型为“std::_bit_reference&”的非常量lvalue引用绑定到类型为“std::vector::reference”{aka“std::_bit_reference”}的rvalue 因此,它抱怨,因为只有第二个参数是rvalue
我有一个整数向量: 考虑到将始终为偶数。 我只是想把相邻的元素转换成一对,像这样: 即,两个相邻元件接合成一对。 我可以使用什么STL算法轻松实现这一点?有没有可能通过一些标准算法来实现这一点? 当然,我可以很容易地编写一个旧的索引for循环来实现这一点。但我想知道最简单的解决方案是什么,使用rangebased for循环或任何其他STL算法,比如,等等。
我在下面声明std: map: 但是我有很多错误,比如: 错误16错误C2676:二进制' 我做错了什么?
要检查向量是否为空,我可以使用或。我查看了cplike上的签名,但缺乏理解它们的知识。它们如何相互关联?一个实现调用另一个实现吗? 我知道其中一个来自容器库,另一个来自迭代器库,但仅此而已。