C++ 请问怎么获取 map的元素呢

C++ 请问怎么获取 map的元素呢,第1张

map和vector不同,如果使用下标符号访问不存在的元素会将该元素添加进map

比如如下编写程序时:

map <string ,int> word_count;

word_count["Anna"]=1;

将发生以下事情:

1在word_count中查找建为Anna的元素,没有找到

2将一个新的键-值对插入word_count中。它的键是const string类型的对象,保存Anna,值采用值初始化

3将这个新的键-值对插入word_count中

4读取新插入的元素,并将它的值赋为1

所以一般访问map中的元素采用其成员函数

mfind(k)

如果m容器中存在按k索引的元素,则返回指向该元素的迭代器。如果不存在,则返回超出末端迭代器!

在python中,构成可迭代对象的要素有:字符串、列表、元组、字典、集合等。

可以对list、tuple、dict、set、str等类型的数据使用forin的循环语法从其中依次拿到数据进行使用,把这样的过程称为遍历,也叫迭代。把可以通过forin这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable)。

可迭代对象通过iter方法向我们提供一个迭代器,在迭代一个可迭代对象的时候,实际上就是先获取该对象提供的一个迭代器,然后通过这个迭代器来依次获取对象中的每一个数据。那么也就是说,一个具备了iter方法的对象,就是一个可迭代对象。

迭代器的特点

对于迭代器,如果只想获得下一个元素而不是遍历,可以调用next方法而实现,不过,我们往往不会直接调用Python中的特殊方法,内建函数next可以帮助我们获取迭代器的下一个元素,next在内部会调用迭代器的next方法。

同时,需要注意,迭代器只能迭代一轮,也就是说,如果容器中已经没有可用的元素,则迭代器就不能再次使用了(再次调用next函数获取下一个元素会产生异常),如果想要重新进行迭代,需要再次调用iter函数获取一个新的迭代器对象。

一种自动迭代的更优雅的实现是使用 for循环

在Python中,迭代器(Iterator)和可迭代(iterable)的区别是,迭代器支持 iter ()和 next ()方法;可迭代支持 iter ()方法。可迭代只能在for循环中获得元素,迭代器还可以用next()方法获取元素。

list/truple/map/dict都是可迭代,但不是迭代器;这些数据的大小是确定的;迭代器不是,迭代器不知道要执行多少次,所以可以理解为不知道有多少个元素,每调用一次next(),就会往下走一步。

凡是可以for循环的,都是Iterable

凡是可以next()的,都是Iterator

vector:

Constructors 构造函数

Operators 对vector进行赋值或比较

assign() 对Vector中的元素赋值

at() 返回指定位置的元素

back() 返回最末一个元素

begin() 返回第一个元素的迭代器

capacity() 返回vector所能容纳的元素数量(在不重新分配内存的情况下)

clear() 清空所有元素

empty() 判断Vector是否为空(返回true时为空)

end() 返回最末元素的迭代器(译注:实指向最末元素的下一个位置)

erase() 删除指定元素

front() 返回第一个元素

get_allocator() 返回vector的内存分配器

insert() 插入元素到Vector中

vector可以像数组一样访问,所以你可以用vector[1],vector[2],这样的方式去访问。或者可以使用迭代器vector::iterator去访问,这里就不具体介绍了。

有如下几种写法:

vector<int>::iterator it;

it = abegin()+4;

it = advance(abegin(), 4);

it = next(abegin(), 4);

以上就是关于C++ 请问怎么获取 map的元素呢全部的内容,包括:C++ 请问怎么获取 map的元素呢、构成可迭代对象的要素、Python中的迭代器与可迭代:iter()和next()等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9791254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存