我需要在一个循环中不停创建 list,然后把这些 list 放进一个 map 的 value 中。
while (条件){
//1.创建 list ; //2.放入 map ;
}
要怎么做呢?如果又更好的方法,也可以告诉我,感谢您的回复
1 l00t 2020-06-10 10:40:17 +08:00 这问得…… 你不先写写看么?你先写一个 |
![]() | 2 opiviqo OP 写不出来 while 创建不同的 list,搞不懂 |
![]() | 4 wysnylc 2020-06-10 10:42:26 +08:00 用 Java Stream 很好写,C++不是很清楚但是应该有差不多的方式 |
![]() | 6 Jacky23333 2020-06-10 10:44:43 +08:00 via Android ![]() @opiviqo 兄弟,你在 while 里面定义的变量作用域只限于本次循环 |
7 nightwitch 2020-06-10 10:45:09 +08:00 std::map<int, std::list<int>> map; int index = 0; while(condition) { map.emplace({index++,std::list<int>{}); } 大概是这样吧? |
![]() | 8 araraloren 2020-06-10 10:47:47 +08:00 ![]() @opiviqo 什么 变量名??你先把自己的想法 写出来 ,我们才能知道你哪里错了。。 |
![]() | 9 opiviqo OP @araraloren 每一次执行 while 就创建一个新的 list,然后给 list 赋值,然后给给这个 list 放入到同一个 map 中 while (条件){ 创建新的 list ; //这里要保证每个 list 又不同的内存空间,因为要存不同的数据;我个人理解就是每次创建的 list 变量名都是不变的有问题; list 赋值; 放入 map } |
11 l00t 2020-06-10 10:58:00 +08:00 ![]() 所以说你不先写一下么…… 你不写你怎么知道变量名相同有没有问题呢 |
![]() | 12 opiviqo OP @Tony042 有 key 那个 value 就是个 list,boss 要求放 list,我不知道为何,被动执行。 |
![]() | 13 hello2060 &nbp; 2020-06-10 11:00:30 +08:00 ![]() @opiviqo #9 所以你写出来就对了 不管是 vector 还是指针,你只要是 new 出来的东西都在堆上,空间不是重合的。 ``` while () { vector<int> v = xxx map[x] = v } ``` |
![]() | 14 Madcrow 2020-06-10 11:04:31 +08:00 via Android 放进 map 里会执行一次拷贝构造,所以没有你担心的问题 |
![]() | 15 Procumbens 2020-06-10 11:05:43 +08:00 |
![]() | 16 jmc891205 2020-06-10 11:33:26 +08:00 via iPhone loop { vector<int> v; m[key] = v; } |
![]() | 17 zycpp 2020-06-10 11:57:14 +08:00 via Android 考虑一下智能指针? |
![]() | 18 araraloren 2020-06-10 16:50:52 +08:00 这不是学习没到家么,每一次循环 块内的变量都是不相关的, 他们是有 相同名字 相同生命周期 但出生在不同时间的 变量 而且 我现在也不确定你想做的事情能不能写成循环,因为很显然你还没有理解循环是怎么回事。。 |