问几个关于vector的问题

lxhtzy 2006-11-27 10:58:03
1,能有这样的定义吗:vector<vector<int>> ivec;
2,vector<spring> vec1("hellow"),vec2("h");
vector<spring>::iterator vc1=vec1.begin(),vc2=vec2.begin();
那么vc1==vc2吗?
也就是说 :如何理解如果两个迭代器对象指向同一个元素,则他们相等,否则就不相等。
...全文
218 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
greenteanet 2006-11-28
  • 打赏
  • 举报
回复
1,能有这样的定义吗:vector<vector<int>> ivec;
这个是可以的,属于模板的嵌套。但是注意书写格式。
2,应该理解为指针的判等条件。
晨星 2006-11-28
  • 打赏
  • 举报
回复
一般指的是同一容器中的同一元素,而不是不同容器中的同一位置。
lxhtzy 2006-11-28
  • 打赏
  • 举报
回复
谢谢啊 分不多
KthTes 2006-11-28
  • 打赏
  • 举报
回复
1.可以。模板类型可以嵌套
2.应该是vector<string>楼主写错了。楼主可以做一个试验:

#include <iostream>
#include <vector>
#include <typeinfo>

using namespace std;

class A
{
};

int main()
{
vector<string> svec;
vector<string>::iterator it=svec.begin();
if(typeid(*it)==typeid(string))
cout<<"OK"<<endl;
if(typeid(it)==typeid(string*))
cout<<"OK"<<endl;
return 0;
}

呵呵,实际证明,你的vector<string>::iterator的类型就是string*,vector<int>::iterator就是int*

明白了吧?

指针怎么判等的,iterator就怎么判等。你要想看它们实际指向的东西等不等,那要加解引用运算符*。
taodm 2006-11-28
  • 打赏
  • 举报
回复
iterator相当于指针(虽然精确的说法是指针是一种iterator),指针所指向的地址值相同,指针才相等,iterator同理。
lxhtzy 2006-11-27
  • 打赏
  • 举报
回复
如何理解如果两个迭代器对象指向同一个元素,则他们相等,否则就不相等。
晨星 2006-11-27
  • 打赏
  • 举报
回复
(1)可以,但后面两个“>>”需要用空格隔开一下:vector<vector<int> > ivec;否则,编译器会将“>>”识别成一个移位运算符,从而报出语法错误。

(2)vc1==vc2?这个怎么说呢,不同的库产品中,vector::iterator的类型不尽相司,但至少从C++语言标准中得不出楼主的结论。

64,663

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧