矢量错误,无法让push_back工作

use*_*359 4 c++ stl vector push-back

这只是未注释代码的一小部分.打包向量一直导致错误push_back(),我不太清楚为什么:

编辑:它已更新说

vector<BinTreeNode<HuffmanToken<Pixel>* > > packing = new vector<BinTreeNode<HuffmanToken<Pixel> > >();
Run Code Online (Sandbox Code Playgroud)

但是,即使使用调整后的模板,仍然存在分配器错误.

没有匹配的函数来调用std :: vector,std :: allocator >> :: 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);
}
Run Code Online (Sandbox Code Playgroud)

Ken*_*nde 6

您的矢量期待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);
    }
Run Code Online (Sandbox Code Playgroud)

与原始代码的唯一区别在于vector<HuffmanToken<Pixel> >(替换vector<BinTreeNode<HuffmanToken<Pixel> >*>vector自身以及迭代器).