关于c++中vector模板的问题

问题在注释里
看不清楚的话,图片另存为之后好像要清楚一点

第1个回答  推荐于2016-08-10

    vector 是 模板类, vector<int> 是由int类型具体化实体类.

    使用 using std::vector; 是为了在程序中不用 每次都带上 std:: 而可以直接 vector<...>

    你程序中, 已经 using std::vector; 了, 没有任何必要 再 using std::vector<int>; 

---------------

当然不会被占用. 

vector 每次 push_back 的时候 会检查 自己的 size 和 capacity(容量), 如果 两者相等了, 就会重新申请一个两倍于现在大小的内存, 然后把元素copy过去.

如果你发现 vector中第一个值的地址没有变动(没有发生copy), 那证明 后面还有足够的内存 供 vector push_back. 不用担心你的问题.

追问

但是将using std::vector;注释起来会报错('iterator' : undeclared identifier)。还有,iterator与vector 又是什么关系呢,iterator是一个类型吗,迭代器感觉一点都没有学懂……

追答

因为你贴的是图片, 我没有测试你的代码.

但是理论上讲, 肯定是没有问题的. 至于会报错. 我只有 疑惑了.
记住, 学习C++ 模板, 不要使用 vc6... 它自带的编译器很垃圾, 对模板的支持一点都不好.

iterator 是一个类型, 每个容器都有自己的 迭代器. 它们因为和 容器的相关性很大, 所以直接定义在 每个容器的内部 . 所以使用的时候, 才会像这样
vector::iterator iter = vi.begin();
建议您还是用其它的编译器试试吧.
dev-cpp, codeblocks 这些ide 都自带的 gcc 编译器, 而且可以更新 mingw的版本. 我现在使用的就是gcc5.1, 最新的了. 对C++11, c++14都完全支持了.

本回答被提问者采纳
相似回答