xxx["fdas"] = 1
xxx["xx"] = 2
std::map::iteraotr iter = xxx.begin();
我如何能够快速的访问map的第2个元素 “xx" 呢?
std::map 我知道存储的是一个树结构不能像vector那样操作,但可以iter++ 为什么不能 iter+1?
11 个解决方案
#1
但可以iter++ 为什么不能 iter+1?
楼主知道 iterator 分为哪几种类型吗?
楼主知道 iterator 分为哪几种类型吗?
#2
std::map 我知道存储的是一个树结构不能像vector那样操作,但可以iter++ 为什么不能 iter+1?
因为map的迭代器不是随即访问迭代器。所以不能iter+1
因为map的迭代器不是随即访问迭代器。所以不能iter+1
#3
std::vector::iterator
std::map::iterator
是不同的迭代器这我知道
我的问题是
让我写for去iter++指定的次数到指定的位置 为什么不让 iter+X 直接过去?
或者有什么其他办法?
std::map::iterator
是不同的迭代器这我知道
我的问题是
让我写for去iter++指定的次数到指定的位置 为什么不让 iter+X 直接过去?
或者有什么其他办法?
#4
用过 advance() 没,不过它是引用传参,没返回值,需要的话给它包装一下。
#5
请看我在2楼给你的提示
#6
恩 感谢pengzhixi
能告诉我有什么办法快速访问 达到我的需求吗? 不要让我for
能告诉我有什么办法快速访问 达到我的需求吗? 不要让我for
#7
可以find一下
iter = xxx.find("xx");
iter就是"xx"的位置
iter = xxx.find("xx");
iter就是"xx"的位置
#8
没什么技巧,因为map的数据结构注定了。直接用自带的find函数吧
#9
lz好好复习数据结构。
#10
除了 advance 外,稍微麻烦一点的,就是做个适配器,提供随机访问迭代器接口。
你自己斟酌吧,貌似 advance 的类包装版。。。
你自己斟酌吧,貌似 advance 的类包装版。。。
#11
map,set的设计是为了快速查找元素。
所以设计为红黑树或平衡二叉树。
如果楼主有随机访问的需求,
要直接访问第二个元素。
请使用vector。
如果是对组,可以使用,
vector< pair<std::string, int> >
iter + n == 随机访问,
是要内存连续存储的,如vector,string。
map,set最好也不要++iter。
效率太低。
所以设计为红黑树或平衡二叉树。
如果楼主有随机访问的需求,
要直接访问第二个元素。
请使用vector。
如果是对组,可以使用,
vector< pair<std::string, int> >
iter + n == 随机访问,
是要内存连续存储的,如vector,string。
map,set最好也不要++iter。
效率太低。
#1
但可以iter++ 为什么不能 iter+1?
楼主知道 iterator 分为哪几种类型吗?
楼主知道 iterator 分为哪几种类型吗?
#2
std::map 我知道存储的是一个树结构不能像vector那样操作,但可以iter++ 为什么不能 iter+1?
因为map的迭代器不是随即访问迭代器。所以不能iter+1
因为map的迭代器不是随即访问迭代器。所以不能iter+1
#3
std::vector::iterator
std::map::iterator
是不同的迭代器这我知道
我的问题是
让我写for去iter++指定的次数到指定的位置 为什么不让 iter+X 直接过去?
或者有什么其他办法?
std::map::iterator
是不同的迭代器这我知道
我的问题是
让我写for去iter++指定的次数到指定的位置 为什么不让 iter+X 直接过去?
或者有什么其他办法?
#4
用过 advance() 没,不过它是引用传参,没返回值,需要的话给它包装一下。
#5
请看我在2楼给你的提示
#6
恩 感谢pengzhixi
能告诉我有什么办法快速访问 达到我的需求吗? 不要让我for
能告诉我有什么办法快速访问 达到我的需求吗? 不要让我for
#7
可以find一下
iter = xxx.find("xx");
iter就是"xx"的位置
iter = xxx.find("xx");
iter就是"xx"的位置
#8
没什么技巧,因为map的数据结构注定了。直接用自带的find函数吧
#9
lz好好复习数据结构。
#10
除了 advance 外,稍微麻烦一点的,就是做个适配器,提供随机访问迭代器接口。
你自己斟酌吧,貌似 advance 的类包装版。。。
你自己斟酌吧,貌似 advance 的类包装版。。。
#11
map,set的设计是为了快速查找元素。
所以设计为红黑树或平衡二叉树。
如果楼主有随机访问的需求,
要直接访问第二个元素。
请使用vector。
如果是对组,可以使用,
vector< pair<std::string, int> >
iter + n == 随机访问,
是要内存连续存储的,如vector,string。
map,set最好也不要++iter。
效率太低。
所以设计为红黑树或平衡二叉树。
如果楼主有随机访问的需求,
要直接访问第二个元素。
请使用vector。
如果是对组,可以使用,
vector< pair<std::string, int> >
iter + n == 随机访问,
是要内存连续存储的,如vector,string。
map,set最好也不要++iter。
效率太低。