list pop_back 如何不可以用了
list pop_back 怎么不可以用了
我定义了2个容器来存储我从数据库中取出来的数据
typedef ::std::map <CString,CString> SQLRstMapField;
typedef ::std::list <SQLRstMapField> SQLRstMapList;
以前在vc6.0 stlport4.x下是没有问题的
改成2005用微软自带的stl就错误鸟
//
原因是找到了以前的是
//
list.push_back(SQLRstMapField);
2005下要用
list.insert(mapList.end(),SQLRstMapField);
可是为什么了。
下面是代码片段
while ((row = mysql_fetch_row(m_hRes)))
{
MYSQL_FIELD *fields;
fields = mysql_fetch_fields(m_hRes);
SQLRstMapField fileMap;
if(NULL == fields)
{
continue;
}
for(int i = 0; i < fileCount; ++i)
{
CString fValue = " ";
if(row[i]!=NULL){
fValue = row[i];
}
fileMap[fields[i].name] = fValue;
}
//2005改成insert的
mapList.insert(mapList.end(),fileMap);
// vc6.0下用stlport4.x是可以的
// 2005下报错内存读写错误,说内存被锁住了
mapList.push_back(fileMap);
//delete fields;
fields = NULL;
}
------解决方案--------------------
//delete fields;
你这个是怎么回事?
你的SQLRstMapField实现了正确的拷贝构造函数么?
我定义了2个容器来存储我从数据库中取出来的数据
typedef ::std::map <CString,CString> SQLRstMapField;
typedef ::std::list <SQLRstMapField> SQLRstMapList;
以前在vc6.0 stlport4.x下是没有问题的
改成2005用微软自带的stl就错误鸟
//
原因是找到了以前的是
//
list.push_back(SQLRstMapField);
2005下要用
list.insert(mapList.end(),SQLRstMapField);
可是为什么了。
下面是代码片段
while ((row = mysql_fetch_row(m_hRes)))
{
MYSQL_FIELD *fields;
fields = mysql_fetch_fields(m_hRes);
SQLRstMapField fileMap;
if(NULL == fields)
{
continue;
}
for(int i = 0; i < fileCount; ++i)
{
CString fValue = " ";
if(row[i]!=NULL){
fValue = row[i];
}
fileMap[fields[i].name] = fValue;
}
//2005改成insert的
mapList.insert(mapList.end(),fileMap);
// vc6.0下用stlport4.x是可以的
// 2005下报错内存读写错误,说内存被锁住了
mapList.push_back(fileMap);
//delete fields;
fields = NULL;
}
------解决方案--------------------
//delete fields;
你这个是怎么回事?
你的SQLRstMapField实现了正确的拷贝构造函数么?