矢量错误,无法使push_back工作
Vector error , cannot get push_back to work
这只是未注释代码的一个片段。包装矢量一直在push_back()
上引起错误,我不太确定为什么:
编辑:已更新为
vector<BinTreeNode<HuffmanToken<Pixel>* > > packing = new vector<BinTreeNode<HuffmanToken<Pixel> > >();
然而,即使调整了模板,分配器仍然存在错误。
没有匹配的函数来调用std::vector、std::allocater>>::push_back(BinTreeNode>>&
BinTree<HuffmanToken<Pixel> >* Huffman::buildTree(const vector<HuffmanToken<Pixel>>& tokens) {
BinTreeNode<HuffmanToken<Pixel> >* g1 = new BinTreeNode<HuffmanToken<Pixel> >();
BinTreeNode<HuffmanToken<Pixel> >* g2 = new BinTreeNode<HuffmanToken<Pixel> >();
BinTreeNode<HuffmanToken<Pixel> >* g3 = new BinTreeNode<HuffmanToken<Pixel> >();
vector<HuffmanToken<Pixel> > packing ;
vector<HuffmanToken<Pixel> >::const_iterator it;
it = tokens.begin();
for(int i = 0; i < tokens.size(); i++) {
g1 -> setValue(tokens.at(i));
packing.push_back(g1);
}
您的向量需要HuffmanToken<Pixel>
对象,但您试图push_back
一个BinTreeNode<HuffmanToken<Pixel> >*
指针。只需确保您的矢量具有正确的模板类型。
编辑
考虑到你的更新,我决定放弃所有的代码,因为它应该是:
BinTree<HuffmanToken<Pixel> >* Huffman::buildTree(const vector<HuffmanToken<Pixel>>& tokens) {
BinTreeNode<HuffmanToken<Pixel> >* g1 = new BinTreeNode<HuffmanToken<Pixel> >();
BinTreeNode<HuffmanToken<Pixel> >* g2 = new BinTreeNode<HuffmanToken<Pixel> >();
BinTreeNode<HuffmanToken<Pixel> >* g3 = new BinTreeNode<HuffmanToken<Pixel> >();
vector<BinTreeNode<HuffmanToken<Pixel> >*> packing ;
vector<BinTreeNode<HuffmanToken<Pixel> >*>::const_iterator it;
it = tokens.begin();
for(int i = 0; i < tokens.size(); i++) {
g1 -> setValue(tokens.at(i));
packing.push_back(g1);
}
与原始代码的唯一区别是vector<HuffmanToken<Pixel> >
被vector<BinTreeNode<HuffmanToken<Pixel> >*>
取代(这适用于vector
本身以及迭代器(。
您的类型不匹配。你有一个HuffmanToken<Pixel>
s的向量,你正试图把一个BinTreeNode<HuffmanToken<Pixel> > *
推到它上面。
BinTreeNode<HuffmanToken<Pixel> >* g1 = new BinTreeNode<HuffmanToken<Pixel> >();
g1
的类型是BinTreeNode<HuffmanToken<Pixel> >*
,即它是指针类型。而CCD_ 12属于CCD_。向量包含的是对象,而不是指向对象的指针。
您的向量类型为HuffmanToken<Pixel>
,但您正试图将类型
BinTreeNode<HuffmanToken<Pixel> >*
推入其中。
这里的问题是您正在创建一个向量,该向量应该包含HuffmanToken<Pixel>
类型的项。您尝试推入BinTreeNode<HuffmanToken<Pixel> >*
,而不是将该类型的项推入向量。
这是行不通的。
您可能想要推送的是g1->getValue((的返回值(如果有这样的方法…(。
- 推导 std::vector::back() 的返回类型
- vector.back() 和 vector[vector.size() - 1] 之间的区别?
- vector.push_back(vector.back()+1) 是未定义的行为吗?
- C++自己的对象堆栈.在 push() 上复制了什么?
- C++ push() 和 pop() 方法使用指针的动态 LinkedList 的问题
- 如何像在javascript中一样"push" c ++映射
- 线路抑制状态错误 C4703 可能未初始化的局部指针变量"back"已使用
- std::vector using back(), pop_back(), push_back(), 得到'double free or corruption'错误
- vector.back()和vector.end()有什么区别
- 列表大小为 1,但 front() 和 back() 不相等
- 返回C++中没有 back() 方法的容器的最后一个元素?
- 在非空 std::list 上使用 std::list.back<int>() 时"Segmentation Fault"
- 模板堆栈类的复制构造函数中的 pop() 和 push() 不起作用
- 我们可以使用Back() - 值索引在其上执行向量插入
- 当我运行以下代码添加str.front() str.back时,它给了我200个,但为什么
- push(ing)back在循环中对象指针
- 在 C++ 中将元素添加到空向量:为什么 push.back 有效而 [] 无效
- 我似乎无法让 v.push.back() 处理字符串
- String::push_back() does not push back
- 向量resize(), push.back(), reserve()方法