为什么我在此 OOPS 中遇到分段错误,以及访问和指针在 C++ 中如何工作?

问题描述 投票:0回答:0

所以我尝试使用向量在 C++ 中实现集合,但在交集方面遇到了麻烦。我认为求交集的最快方法是寻找相同的元素,并将其推入一个新的向量,最后用新的向量替换原始集合。

class SET {
    public:
    vector<int> set;

void intersection(SET set2) {
        auto i = set.begin(), j = set2.set.begin();
        vector<int> retset;
        while (i != set.end() && j != set2.set.end()) {
            while (*i != *j) {
                if (*i < *j) {
                    i++;
                } else {
                    j++;
                }
            }
            retset.push_back(*i);
            i++; j++;
        }
        set = retset;
    }

调试显示问题是 *i 和/或 *j 处的访问错误。这里有什么问题,解决方法是什么? 我可以在最后一步简单地做

set = retset
吗?

我还尝试使用使用整数的简单引用运算符,但这给了我同样的错误。

我正在尝试跑步的输入:

int temp1[5] = {0, 2, 4, 6, 8};
int temp2[6] = {0, 3, 4, 9, 10, 11};
SET set1 = SET(temp1, 5);
SET set2 = SET(temp2, 6);
set1.intersection(set2);
for (vector<int>::iterator i = set1.set.begin(); i !=set1.set.end(); i++)
    cout << *i << " ";
c++ oop pointers vector
© www.soinside.com 2019 - 2024. All rights reserved.