C++11 不是接线员的对手=

C++11 不是接线员的对手=,c++11,vector,C++11,Vector,当我编译代码时,我得到一个错误“运算符不匹配!”(第8行的操作数类型为'int'和'std::vector::iterator' 但当我在第41行使用相同的运算符时,似乎没有问题 #include<iostream> #include<vector> using namespace std; vector<int> Heap; int Size; auto k =0; void max_heapify(vector<int> vect) {

当我编译代码时,我得到一个错误“运算符不匹配!”(第8行的操作数类型为'int'和'std::vector::iterator' 但当我在第41行使用相同的运算符时,似乎没有问题

#include<iostream>
#include<vector>
using namespace std;
vector<int> Heap;
int Size;
auto k =0;
void max_heapify(vector<int> vect)
{
    int vect_size= vect.size()/2;
for(k=vect_size; k != vect.end();k--)//line 8
    {
if(vect[(2*k)+1]>vect[k])
        {
    vect[k]=vect[2*k]+1;
        }
else if(vect[2*k]+2>vect[k])
{
     vect[k]=vect[2*k]+2;
}
    }
 }
 int main()
 {

int items;
cout<<"Enter the size of the heap"<<endl;
cin>>Size;
cout<<"Enter the first element(root) and then the left and the right             elements accordingly"<<endl;
for(int i=1;i<=Size;i++)
{
cout<<"Enter the"<<" "<<i<<" "<<"element";
cin>>items;
Heap.push_back(items);
}
for(auto j=Heap.begin();j!=Heap.end();j++)
    {
    cout<<*j<<endl;
    }
max_heapify(Heap);

for(auto j=Heap.begin();j!=Heap.end();j++)//line 41
    {
    cout<<*j<<endl;
    }

    }
#包括
#包括
使用名称空间std;
向量堆;
整数大小;
自动k=0;
void max_heapify(向量向量)
{
int vect_size=vect.size()/2;
for(k=vect_size;k!=vect.end();k--)//第8行
{
if(vect[(2*k)+1]>vect[k])
{
向量[k]=vect[2*k]+1;
}
else if(向量[2*k]+2>向量[k])
{
向量[k]=vect[2*k]+2;
}
}
}
int main()
{
国际项目;

cout您正在将一个整数与一个结束迭代器进行比较。我不确定您希望for循环做什么。我想您也不知道


大声自言自语,描述它的作用。这会对您有所帮助。

您正在将一个整数与一个结束迭代器进行比较。我不确定您希望循环做什么。我想您也不知道


大声自言自语,描述它的作用。这会对你有所帮助。

My oh My,作为旁白,请将变量名小写,初始化事物,正确地定义事物的范围……My oh My,作为旁白,请将变量名小写,初始化事物,正确地定义事物的范围……那么,我应该这样与迭代器进行比较吗vector::iterator it;for(it=vect.size()/2;it!=vect.begin();it--)就像数组一样遍历它。您只是在存储整数,所以只需对(int i=0;i