gpt4 book ai didi

c++ - make_heap() 函数参数——如果我不想包含某些元素怎么办?

转载 作者:行者123 更新时间:2023-11-28 06:57:41 26 4
gpt4 key购买 nike

关于make_heap函数的问题。
使用 make_heap
STL 中创建堆时它需要 v.begin()v.end()//[front, end)
但是如果我不想在堆中添加 10 怎么办..

我想我可以通过使用来完成这个:

make_heap(v.begin(),v.end()-1);

但这并没有给我任何不同的输出。我尝试使用 make_heap(v.begin(),v.end()-1); 而不是 make_heap(v .begin(),v.end());
但是输出是一样的……

这里发生了什么?..

代码#1:

#include <algorithm>    
#include <vector>


int main () {
int myints[] = {1,2,3,4,5,6,7,8,9,10};
std::vector<int> v(myints,myints+10);




std::make_heap (v.begin(),v.end());
std::cout << "range :";
for (unsigned i=0; i<v.size(); i++)
std::cout << ' ' << v[i];

std::cout << '\n';

return 0;
}

代码#2:

#include <algorithm>   
#include <vector>

int main () {
int myints[] = {1,2,3,4,5,6,7,8,9,10};
std::vector<int> v(myints,myints+10);




std::make_heap (v.begin(),v.end()-1);

std::cout << "range :";
for (unsigned i=0; i<v.size(); i++)
std::cout << ' ' << v[i];

std::cout << '\n';

return 0;
}

两者都给我相同的输出..(?)

最佳答案

这不是一个答案,但我无法重现您的结果:我获得了两个不同的输出。

程序:

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

void code1()
{
int myints[] = {1,2,3,4,5,6,7,8,9,10};
std::vector<int> v(myints,myints+10);

std::make_heap (v.begin(),v.end());
std::cout << "range :";
for (unsigned i=0; i<v.size(); i++)
std::cout << ' ' << v[i];

std::cout << '\n';
}

void code2()
{
int myints[] = {1,2,3,4,5,6,7,8,9,10};
std::vector<int> v(myints,myints+10);

std::make_heap (v.begin(),v.end()-1);
std::cout << "range :";
for (unsigned i=0; i<v.size(); i++)
std::cout << ' ' << v[i];

std::cout << '\n';
}

// ------------------------------------------------------------------------

int main()
{
code1();
code2();
}

编译&输出:

john@---:/tmp$ g++ --version
g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

john@---:/tmp$ g++ -o so2 so2.cpp
john@---:/tmp$ ./so2
range : 10 9 7 8 5 6 3 1 4 2
range : 9 8 7 4 5 6 3 2 1 10
john@---:/tmp$

关于c++ - make_heap() 函数参数——如果我不想包含某些元素怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22949829/

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