我有以下功能, 曾经正常工作,但是,我不知道我做了什么,我开始出现一些奇怪的错误
容器是指针的 vector
template<typename Container>
void delete_collections(Container& c)
{
while(!c.empty())
{
delete c.back(); //<=== here
c.back() = NULL;
c.pop_back(); //<=== & here
}
}
第一个错误
**这条线有多个标记
- (每个未声明的标识符都是
- `back' 未声明(先用这个
第二个错误
- `pop_back' 未声明(首次使用
解决方案 我有一次错误地将映射传递给函数,但我希望编译器给出任何警告。
最佳答案
仅作记录,我会改用专门的容器,看看例如促进。或者,将智能指针存储在您不必手动调用 delete
的位置。尽管如此,以下是如何以适用于除 map 之外的每个容器的方式进行操作:
template<typename container>
void delete_all(container& c) {
for(typename container::const_iterator it=c.begin(), end=c.end(); it!=end; ++it)
delete *it;
c.clear();
}
对于 C++11,您也可以使用 auto
,而不是 typename container::const_iterator
。
关于c++ - 删除 vector 或指针编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17753669/