不兼容的矢量迭代器?

时间:2016-02-20 05:28:19

标签: c++ vector iterator

我正在解决一个涉及一组所有p ^ 2 + q ^ 2的编程问题,使得p和q小于M.为了解决这个问题,我决定创建一个有序向量。但是,以下代码似乎不起作用。它似乎在

给出了一个不兼容的向量迭代器错误
if (iter == bisquares.end()) {

代码如下。

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    ifstream fin("ariprog.in");
    ofstream fout("ariprog.out");

    int N, M;
    fin >> N >> M;

    vector<int> bisquares;
    bisquares.push_back(0);

    for (int i = 0; i <= M; i++) {
        for (int j = 0; j <= M; j++) {
            int bisquare = i * i + j * j; 
            vector<int>::iterator iter = bisquares.begin();
            while (iter != bisquares.end()) {
                if (bisquare < *iter) {
                    iter++;
                    bisquares.insert(iter, bisquare);
                    break;
                }
                if (bisquare == *iter) {
                    break;
                }
                iter++;
            }
            if (iter == bisquares.end()) {
                bisquares.push_back(bisquare);
            }
        }
    }

    // Print Elements
    for (int i = 0; i < bisquares.size(); i++) {
        cout << bisquares[i] << " ";
        if (i % 10 == 9) {
            cout << endl;
        }
    }

    fin.close();
    fout.close();

    return 0;
}

文件ariprog.in包含

3
5

我不确定发生了什么。任何帮助表示赞赏。

0 个答案:

没有答案