为什么“矢量迭代器不兼容”错误只发生在调试模式下?

时间:2018-06-07 09:13:50

标签: c++ debugging vector runtime-error

当我尝试比较矢量的两个不同副本时,我注意到我收到了“Vector Iterators Incompatible”错误。

关于此错误有足够的问题可以找到解决方法:

Why am I getting “vector iterators incompatible”?
C++ STL vector iterators incompatible
Debug Assertion : Vector iterators incompatible (C++)
Vector Iterators Incompatible

我的问题是:是否可以禁用check in in debug或启用check in release以使两种配置的行为方式相同?

我的问题不是:错误的含义,原因或解决方法。

其他详细信息

我的编译器选项,在调试模式下,是:

/Zi /nologo /W3 /WX- /O2 /Oi /Oy- /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm- /EHsc /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Yu"StdAfx.h" /Fp"Release\test.pch" /Fa"Release\" /Fo"Release\" /Fd"Release\vc100.pdb" /Gd /analyze- /errorReport:queue 

并且,在发布模式中:

#include <vector>
#include <iostream>
#include <string>

using namespace std;

class foo{
    public:
        const std::vector<int> getVec(){return myVec;} //other stuff omitted

    private:
        std::vector<int> myVec;
};

int main(int argc, char* argv[])
{
    foo myFoo = foo();

    std::vector<int>::const_iterator i = myFoo.getVec().begin();
    while( i != myFoo.getVec().end())
    {
       //do stuff
       ++i;
    }

    string s;
    cin >> s;

    return 0;
}

以下是重现错误的一小段代码:

var questions= (from s in dbContext.Questions
                         join b in dbContext.Department
                         on s.DepartmentID equals b.ID
                         group s by b.DepartmentName into g
                         select new QuestionGroupedViewModel
                         {
                             DepartmentName= g.Key,
                             QTitle= g.Select(x => x.QTitle).ToList(),
                             QDescription = g.Select(x => x.QDescription).ToList()
                         }).ToList();

0 个答案:

没有答案