当我学习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++,我相信你知道是错误的主要原因.