扫码关注官方订阅号
#include #include #include using namespace std; map >a; int main() { int n ,m ,x,y; while(scanf("%d %d",&n,&m) == 2) { a.clear(); for(int i = 0; i();//这处的用法,没有看懂 a[x].push_back(i+1); } } } while(m--) { scanf("%d%d",&x,&y); if(!a.count(y) || a[y].size() < x) printf("0\n"); else printf("%d\n",a[y][x-1]); } return 0; }
我是最近才学stl,对map用法不是很了解,我的疑问在代码中标注了,想了很长时间也没结果,希望大神们不吝赐教
vector<int>()就是缺省构造一个vector<int>。a[x]=vector<int>()就是在这个map中将key x对应的value设为一个空vector。
vector<int>()
vector<int>
a[x]=vector<int>()
x
if(!a.count(x))是位于一个for循环中的,而上面说的a[x]=...语句会在map中插入元素,所以这个if还是有可能为真的。 另外,由于你用的是map而不是multimap,不支持一个key对应多个value,所以count(key)只会返回0或者1,不会是其它值。
if(!a.count(x))
a[x]=...
count(key)
PS. 不要混用tab和空格,要不然总有一天你会郁闷至死。
if(!a.count(x)) //没有为map表插入元素,怎么来的这句
如果没有插入键为x的元素,那就是0。
a[x] = vector();//这处的用法,没有看懂
默认构造一个vector<int>,然后把它赋给(c++11的话是移动到)a[x]。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
vector<int>()就是缺省构造一个vector<int>。a[x]=vector<int>()就是在这个map中将keyx对应的value设为一个空vector。if(!a.count(x))是位于一个for循环中的,而上面说的a[x]=...语句会在map中插入元素,所以这个if还是有可能为真的。另外,由于你用的是map而不是multimap,不支持一个key对应多个value,所以
count(key)只会返回0或者1,不会是其它值。PS. 不要混用tab和空格,要不然总有一天你会郁闷至死。
如果没有插入键为x的元素,那就是0。
默认构造一个
vector<int>,然后把它赋给(c++11的话是移动到)a[x]。