有关List中pushback()的用法及释放注意事项

针对创建的list型数据,如:
typedef IplImage image_type;

typedef list< image_type* > image_list_type;

image_list_type inputImage;

当向 inputImage里面加入图像帧进去时:
frame = cvQueryFrame(cap);
if( !frame)
break;
imshow("frame",frame);
cvWaitKey(1);
dst_cvsize.width = WIDTH;  //目标图像的宽为源图象宽的scale倍   
dst_cvsize.height =HEIGHT; //目标图像的高为源图象高的scale倍   
dst = cvCreateImage( dst_cvsize, frame->depth,frame->nChannels); //构造目标图象   
cvResize(frame, dst, CV_INTER_LINEAR); //缩放源图像到目标图像

inputImage.push_back(dst);

由于dst是指针型数据,push_back(dst)只是传进去了一个指针,也就是让inputImage的一个元素(指针)指向由这条语句:dst = cvCreateImage( dst_cvsize, frame->depth,frame->nChannels); 所申请的内存中。

最后,当用完inputImage后,要释放时,得分两步:1.释放指针所指向的内存区域(此时也就释放了由dst = cvCreateImage()所创建的内存);2.删除inputImage元素。

如下:

for (image_list_type::iterator _iteratorForDeal=inputImage.begin();_iteratorForDeal!=inputImage.end();_iteratorForDeal++)
{
IplImage* _imgForDeal=*_iteratorForDeal;
cvReleaseImage(&_imgForDeal);  
}


for (image_list_type::iterator ir_del=inputImage.begin();inputImage.end()!=ir_del;)  //刚开始时,m_curcolortrack_list为空
{
ir_del=inputImage.erase(ir_del);//以容器为单位进行删除,此处就不是以索引号。
}

第二步也可这样:直接inputImage.clear();

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误提示表明你在尝试使用一个列表对象的 pushback 方法,但是列表对象并没有该方法。实际上, pushback 是++ vector 容器的方法,而不是 Python 列表的方法。在 Python ,你可以使用 方法向列表添加元素。例如: ```python my_list = [1, 2, 3] my_list.append(4) print(my_list) ``` 输出结果为: ``` [1, 2, 3, 4] ``` ### 回答2: "list"对象没有"pushback"属性。这个错误通常发生在尝试使用"pushback"方法(函数)时,而这个方法在Python的内置"list"类是不存在的。 在Python,"list"是一种常用的数据结构,用于储存一系列的数据元素。它拥有很多内置的方法,比如"append"用于在列表末尾添加元素,"insert"用于在指定位置插入元素,"pop"用于删除并返回指定位置的元素等等。 然而,"pushback"方法并不是Python列表的一个内置方法。可能是因为在其他编程语言存在"pushback"这个方法,而误以为在Python也能使用。 如果我们想在列表末尾添加一个元素,可以使用"append"方法。例如,如果L是一个列表,我们可以使用L.append(element)来将element添加到L的末尾。 总结起来,'list' object has no attribute 'pushback'意指在Python的列表对象没有"pushback"属性或方法。如果想要添加元素到列表末尾,可以使用"append"方法。 ### 回答3: 'list' object has no attribute 'pushback' 这个错误信息可以理解为列表对象没有pushback这个属性。在Python,列表是一种有序的、可变的数据类型,而pushback是一个用于在列表末尾添加元素的方法。然而,在Python,列表没有名为pushback的方法。 相反,Python列表有append方法,用于在列表末尾添加元素。可以通过使用append方法来替代pushback方法。例如,可以使用以下代码将元素添加到列表的末尾: ```python my_list = [1, 2, 3] my_list.append(4) print(my_list) ``` 以上代码将在列表my_list添加数字4,并输出结果:[1, 2, 3, 4]。 因此,如果你遇到了'list' object has no attribute 'pushback'的错误信息,可以尝试将其pushback替换为append,并重新运行代码。这样就可以将元素添加到列表了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值