编程错误-把我从程序中带了出来
Programming error - brought me out from the program
我有一组段编号。这些分段属于特定对象。也就是说,一个对象有许多线段。段标签告诉哪个片段属于哪个对象。所以,现在我想根据对象标签拆分分段编号。
为此,我在下面写了一段代码。假设,我知道对象的数量(比如max)。
分段类是用分段的矢量定义的
Segments mysegments;
Segments::const_iterator itr;
vector<Segments> segments_per_obj;
segments_per_obj.resize(max);
for (itr= mysegments.begin(); itr!= mysegments.end(); itr++){
segments_per_obj[itr->Label()].push_back(*itr);
}
当我编译时,它不会给出任何错误。但当我运行(myprog.exe)时,它会从我的程序中退出,并给出错误窗口,告诉
myprog.exe has encountered a problem and needs to close. We are sorry for the inconvenience.
Please tell Microsoft about this problem.
试试这个:
Segments mysegments;
Segments::const_iterator itr;
vector<Segments> segments_per_obj;
for (itr= mysegments.begin(); itr!= mysegments.end(); itr++)
{
int index = itr->Label();
for (int i = segments_per_obj.size(); i <= index; ++i)
{
segments_per_obj.push_back(<create a new segment>);
}
segments_per_obj[index].push_back(*itr);
}
或者按照建议使用地图,看起来更适合这种情况。
segments_per_obj内部没有任何元素。因此,当您尝试访问它的itr->Label()元素时,您的程序将崩溃。
有两种解决方案:
-
将空的Segment对象添加到segments_per_obj中。您应该添加itr->Label()的最大值。
-
对分段使用映射而不是矢量_per_obj
相关文章:
- C++程序错误:malloc():内存损坏
- C++ Windows 凭据提供程序错误屏幕
- 程序错误地读取了二进制文件的一个字节
- Cmake无法在qt-creater/collect2上编译简单的测试程序:错误:ld
- C 程序错误
- SDL 应用程序错误:“if”之前应为非限定 id
- C++程序错误
- Apache IGNITE编译ODBC驱动程序错误
- 二进制搜索树操作程序错误:分割故障(核心倾倒)
- Cygwin1.dll c++ 应用程序错误
- 无法编译任何C++程序;错误:未知类型名称'uint8_t'
- 带有结构和指针的程序错误(结构,C++)
- 矩阵运算C++运算符重载程序错误
- ilmerge后C /CLI应用程序错误
- SDL 2.0-无效的呈现程序错误
- 如何使用 C# 在网页 asp.net 显示 C 程序错误
- OPENCV:image_proc中的 PCA 应用程序错误
- C++程序错误 - 虚拟析构函数
- LNK2020 C 程序错误
- 程序错误,由于在VS2010中使用std::unique_ptr