C++ c+;中向量的clear()和erase()方法之间的差异+;?

C++ c+;中向量的clear()和erase()方法之间的差异+;?,c++,stl,C++,Stl,下面是我的程序的主要功能,我找不到向量的clear()和erase()之间的任何区别,那么为什么在下面的代码中我会得到不同的结果呢 当我使用erase()而不是clear()时 intmain() { int notest,N,temp; 长款,利润; 整数计数; 向量S; 美国储备银行(50009); cin>>注释; 对于(int-test=0;test>N; 对于(int i=0;i>temp; S.推回(温度); } 在这里做点什么 S.clear(); } } 这里clear()没有

下面是我的程序的主要功能,我找不到向量的clear()和erase()之间的任何区别,那么为什么在下面的代码中我会得到不同的结果呢 当我使用erase()而不是clear()时

intmain()
{
int notest,N,temp;
长款,利润;
整数计数;
向量S;
美国储备银行(50009);
cin>>注释;
对于(int-test=0;test>N;
对于(int i=0;i>temp;
S.推回(温度);
}
在这里做点什么
S.clear();
}
}

这里clear()没有生成所需的结果,但是当我使用erase时,我得到了所需的结果,为什么?

clear()
从向量中删除所有元素,在
erase()时留下一个大小为零的向量
从向量中删除单个元素或一系列元素。

擦除接受一个参数-要擦除的对象。清除将转储该批次


根据手册

您如何使用擦除?
erase()
使用迭代器。
clear
不使用迭代器。问题是什么?Stackoverflow没有结束原因“一般参考”阅读有什么问题?这个答案有同样多的赞成票,这让我想知道这对于堆栈溢出来说是否真的不是一个好问题。
 int main()
 {
    int notest, N, temp;
    long long sum, profit;
    int count;

    vector<int> S;
    S.reserve(50009);
    cin>>notest;

    for(int test=0; test<notest; test++)
   {
       profit = 0;
       cin>>N;
    for(int i=0; i<N; i++)
    {
            cin>>temp;
            S.push_back(temp);

    }

    DO SOME THING HERE
    S.clear();      
}


 }