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

问题在注释里看不清楚的话,图片另存为之后好像要清楚一点... 问题在注释里
看不清楚的话,图片另存为之后好像要清楚一点
展开
 我来答
leesunshine007
推荐于2016-08-10 · TA获得超过1172个赞
知道小有建树答主
回答量:701
采纳率:0%
帮助的人:434万
展开全部
  1. vector 是 模板类, vector<int> 是由int类型具体化实体类.

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

  3. 你程序中, 已经 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都完全支持了.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式