老程序员需要STL机密

use*_*291 0 c++ stl vector

当我学习C++时,他们警告我不要使用STL.这是新的,错误的,低效的.最近我发现自己为一个新项目创建了一个容器,并意识到它可能是NIH的一个案例,我应该尝试STL <vector>.

不幸的是它不起作用.

#include <stdio.h>
#include <stdlib.h>

#include <vector>

class test {
    public:
    int x;
};

int main(int argc,char *argv[]) {
    std::vector<test> obj;
    test *tmp=new test();
    tmp->x=42;
    obj.push_back(tmp);
    }
Run Code Online (Sandbox Code Playgroud)

g ++警告我,push_back没有匹配函数,push_back将const value_type&作为参数.我已经尝试过许多演员来强迫这一点,但它拒绝让步.

我现在浪费了更多的时间来尝试以"正确"的方式完成它而不是编写另一个容器并调试它.

如果这听起来像愤怒和沮丧,你就是敏锐的.我已经发现了几个像我一样的问题,但答案非常难以理解.如果这是一个火焰会飞的地方,我会期待为此加油.我已经潜伏了stackoverflow几年,我打赌有人可以"像我五岁那样解释它".

是否有单行咒语迫使演员工作?如果没有,这些载体应该如何使用?

joh*_*ohn 11

失去指针

std::vector<test> obj;
test tmp;
tmp.x=42;
obj.push_back(tmp);
Run Code Online (Sandbox Code Playgroud)

你有一个test不是test*这样的向量我不知道为什么你试图涉及指针.STL的一个巨大优势是它允许你避免指针,作为一个经验丰富的C++,我相信你知道是错误的主要原因.