C++新手,请教一个循环中创建 list 的问题

2020-06-10 10:38:23 +08:00
 opiviqo

我需要在一个循环中不停创建 list,然后把这些 list 放进一个 map 的 value 中。

while (条件){

//1.创建 list ;
//2.放入 map ;

}

要怎么做呢?如果又更好的方法,也可以告诉我,感谢您的回复

1876 次点击
所在节点    C++
18 条回复
l00t
2020-06-10 10:40:17 +08:00
这问得…… 你不先写写看么?你先写一个
opiviqo
2020-06-10 10:41:13 +08:00
写不出来 while 创建不同的 list,搞不懂
opiviqo
2020-06-10 10:41:25 +08:00
@l00t 写不出来 while 创建不同的 list,搞不懂
wysnylc
2020-06-10 10:42:26 +08:00
用 Java Stream 很好写,C++不是很清楚但是应该有差不多的方式
opiviqo
2020-06-10 10:42:57 +08:00
@l00t 那个变量名要怎么随着 while 改变?
Jacky23333
2020-06-10 10:44:43 +08:00
@opiviqo 兄弟,你在 while 里面定义的变量作用域只限于本次循环
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>{});
}
大概是这样吧?
araraloren
2020-06-10 10:47:47 +08:00
@opiviqo 什么 变量名??你先把自己的想法 写出来 ,我们才能知道你哪里错了。。
opiviqo
2020-06-10 10:54:30 +08:00
@araraloren 每一次执行 while 就创建一个新的 list,然后给 list 赋值,然后给给这个 list 放入到同一个 map 中
while (条件){
创建新的 list ; //这里要保证每个 list 又不同的内存空间,因为要存不同的数据;我个人理解就是每次创建的 list 变量名都是不变的有问题;
list 赋值;
放入 map
}
Tony042
2020-06-10 10:56:56 +08:00
@opiviqo 你要是不需要 key value 的话,直接 vector 不更好?
l00t
2020-06-10 10:58:00 +08:00
所以说你不先写一下么…… 你不写你怎么知道变量名相同有没有问题呢
opiviqo
2020-06-10 10:59:01 +08:00
@Tony042 有 key 那个 value 就是个 list,boss 要求放 list,我不知道为何,被动执行。
hello2060
2020-06-10 11:00:30 +08:00
@opiviqo #9
所以你写出来就对了
不管是 vector 还是指针,你只要是 new 出来的东西都在堆上,空间不是重合的。

```
while () {
vector<int> v = xxx
map[x] = v
}
```
Madcrow
2020-06-10 11:04:31 +08:00
放进 map 里会执行一次拷贝构造,所以没有你担心的问题
Procumbens
2020-06-10 11:05:43 +08:00
@opiviqo

在 while 大括号里新定义的 list 每一次都是新的变量
jmc891205
2020-06-10 11:33:26 +08:00
loop {
vector<int> v;
m[key] = v;
}
zycpp
2020-06-10 11:57:14 +08:00
考虑一下智能指针?
araraloren
2020-06-10 16:50:52 +08:00
这不是学习没到家么,每一次循环 块内的变量都是不相关的,
他们是有 相同名字 相同生命周期 但出生在不同时间的 变量
而且 我现在也不确定你想做的事情能不能写成循环,因为很显然你还没有理解循环是怎么回事。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/680260

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX