作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是遇到了一个奇怪的问题,该问题仅在带有Clion的MSVC上发生,而在其他编译器上没有发生(我在Linux和Visual Studio上尝试了gcc,但在相同的代码下都没有这种问题)。
使用以下代码:
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int>v = {1,2,3,4,5};
make_heap(v.begin(), v.end());
v.push_back(6);
push_heap(v.begin(), v.end());
}
错误“在实例化功能模板专门化'std::push_heapstd::_ Vector_iterator
最佳答案
看来您无法使用以下命令初始化vector:
vector<int>v = {1,2,3,4,5};
更改为:
vector<int> vect{ 1, 2, 3, 4, 5 };
编译并运行代码,看看它是否仍然有问题。
If your compiler supports C++11, you can simply do:
std::vector<int> v = {1, 2, 3, 4};
由于您没有告诉我们您的编译器版本和环境,因此很难确定这是否是问题所在。另请注意:
This is available in GCC as of version 4.4.
Unfortunately, VC++ 2010 seems to be lagging behind in this respect.
因此,如果您使用的是VC++的旧版本,那么您就不走运了...
关于c++ - make_heap和pop_heap可以,但是push_heap不能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62964237/
我迷失在 std 堆函数中...似乎 push_heap 不尊重我输入的比较器。 编辑:我创建了无意义的 operator=(),它导致了错误。我修复了代码中的部分.... 这是一个精简的例子: #i
根据 CPP Reference , std::priority_queue::emplace “有效调用” c.emplace_back(std::forward(args)...); std::p
我正在尝试 push_heap在 list 上,但编译失败提示列表迭代器。如果我将列表更改为 vector ,它就可以正常工作。 查看 cpp 引用资料,我无法弄清楚为什么列表迭代器会有不同的行为。也
我想维护一个有效负载为 MoveConstructible 的堆(因为它们在内部包含一个 std::unique_ptr。)虽然 documentation建议对象必须是 MoveAssignable
我替换了堆的一个随机元素,然后在此容器上调用了push_heap。在这种情况下,它的复杂度是多少:O(n) 或 O(logN)? /* heap elements are stored on a ra
我是一名优秀的程序员,十分优秀!