c++ - 老程序员需要STL秘籍

标签 c++ vector stl

当我学习 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/

相关文章:

c++ - C++列表中最常见的元素,STL?

c++ - 使用 << 运算符同时写入文件和 cout

c++ - 关于C++中的递归函数(初级)

c++ - 基于角色的访问控制 C++ 库或示例

c++ - 如何从 C++ 容器中获取随机元素?

c++ - std::priority_queue 自定义比较器背后的逻辑

c++ - C++如何获取BIOS信息

python - 在python中制作一个0到n的向量

c++ - 初始化 vector 迭代器

c - 从 C 中的数组中查找不同的数字