我正在制作一个c ++代码并且发生错误我不知道为什么

M.K*_*led -4 c++ console vector codeblocks

不知道我的问题在哪里.我尝试编译一次代码并且它有效.但是,我将它复制到一个新项目中以便修改它,只是颜色或等待的时间,它只适用于第一个程序.怎么了?我感到非常沮丧.使用此代码,我想绘制正弦函数.这是我的代码:

#include <bits/stdc++.h>

using namespace std;
int main()
{
    int t,n1,n2,res=0;
    cin>>t;
    vector<int> v1;
    vector<int> v2;
    while (t--) {
        cin>>n1>>n2;
        v1.push_back(n1);
        v2.push_back(n2);
    }
    for (int i=v1.size();i>0;i++) {
        bool state=binary_search(v2.begin(),v2.end(),v1[i-1]);
        if (state){
            v1.pop_back();
            res++;
        }
    }
    cout<<res<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

控制台错误

koc*_*ica 5

更改

for (int i=v1.size();i>0;i++)
Run Code Online (Sandbox Code Playgroud)

for (int i=v1.size();i>0;i--)
Run Code Online (Sandbox Code Playgroud)

否则你会在边界后面访问 - > UB.

甚至是内存中的另一个段 - > SIGSEGV.


另外的std :: binary_search说:

"...... 完全排序的范围符合这些标准."

所以在打电话之前binary-search你必须这样做

std::sort (v2.begin(), v2.end());
Run Code Online (Sandbox Code Playgroud)