当我学习 C++ 时,他们警告我不要使用 STL。它是新的、有缺陷的、低效的。最近我发现自己正在为一个新项目创建一个容器,并意识到这可能是一个 NIH 的情况。我应该试试 STL
不幸的是,它不起作用。
#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);
}
g++ 警告我没有 push_back 的匹配函数,并且 push_back 将 const value_type& 作为参数。我已经尝试了很多 Actor 来强制这样做,但它拒绝让步。
与编写另一个容器并调试它所花费的时间相比,我现在已经浪费了更多的时间尝试以“正确”的方式做到这一点。
如果这听起来像是愤怒和沮丧,那么你是有洞察力的。我已经发现了几个像我这样的问题,但答案非常难以理解。如果这是一个火焰飞扬的地方,我希望为此而 toast 。我已经在 stackoverflow 周围潜伏了几年,我敢打赌有人可以“像我五岁一样解释它。”
是否有一种单行咒语可以强制类型转换工作?如果不是,应该如何使用这些载体?
最佳答案
失去指针
std::vector<test> obj;
test tmp;
tmp.x=42;
obj.push_back(tmp);
你有一个 vector test
而不是 test*
所以我不确定你为什么试图涉及指针。 STL 的巨大优势之一是它允许您避免使用指针,作为有经验的 C++ 用户,我相信您知道指针是错误的主要原因。
关于c++ - 老程序员需要STL秘籍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18552086/