C++ 向矩阵添加值
C++ Adding values to kind of a matrix
我有以下类:
class clsJoinFeeder
{
public:
vector<vector<unsigned char> > UnsignedChars;
};
现在我想向类添加一个无符号字符的向量。我尝试这样做:
void CBinLoader::LoadJoinFeaturesFromCompiledDat(clsJoinFeeder &uJoinFeeder)
{
for (unsigned int y=0;y<2;y++)
{
for (unsigned int x=0;x<17;x++)
{
pLoadSmallFloatMap(uJoinFeeder);
pLoadBigUnsignedCharMap(uJoinFeeder);
}
}
}
void CBinLoader::pLoadBigUnsignedCharMap(clsJoinFeeder &uJoinFeeder)
{
unsigned int iItemsCount = 0;
fread(&iItemsCount,sizeof(unsigned int),1,m_infile);
unsigned long iByteSizeActualData = 0;
fread(&iByteSizeActualData,sizeof(unsigned long),1,m_infile);
vector<unsigned char>nChars;
nChars.resize(iItemsCount+1);
fread(&nChars[0],iByteSizeActualData,1,m_infile); //works fine. nChars is correctly filled
uJoinFeeder.UnsignedChars.push_back(nChars); //here the crash occurs
}
它编译正常,但在运行时崩溃,并在行中出现堆分配错误:
uJoinFeeder.UnsignedChars.push_back(nChars);
我该怎么做才能解决问题?我什至没有看到我的错误。
编辑:
谢谢你的帮助!正如Kühl先生所说,"iByteSizeActualData"是错误的。
我猜iItemsCount
和iByteSizeActualData
具有不同的值,后者大于iItemsCount
。就个人而言,我会调用fread()
if (fread(&nChars[0], nChars.size(), 1, m_infile) != nChars.size()) {
dealWithTheError();
}
(好吧,我不会打电话给fread()
而是stream.read()
但这是另一回事)。
试试这个:
myJoinFeeder.UnsignedChars.push_back(std::vector<unsigned char>(std::begin(nChars), std::end(nChars));
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 只能向C++添加一定数量的字符
- Qt和C++:将QLineEdit添加到QTabWidget中
- 将QIcon添加到QTableView单元格
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- 为什么除非添加括号,否则构造函数上的模板替换会失败?
- 将图像添加到资源文件夹UWP C++
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题