为了账号安全,请及时绑定邮箱和手机立即绑定

c++11 auto遍历存储线程vector

c++11 auto遍历存储线程vector

GCT1015 2018-07-22 13:22:23
我这里已经明白了是因为线程不能被复制#include <iostream>#include <thread>#include <vector>using namespace std;void Func() {    cout << "hello world" << endl; }int main() {    vector<thread> tmp;    for (int i = 0; i < 5; i++)      {         tmp[i] = thread(Func);     }    for (auto it : tmp)      {        //     } }于是我尝试使用迭代器像这样#include <iostream>#include <thread>#include <vector>using namespace std;void Func() {    cout << "hello world" << endl; }int main() {    vector<thread> tmp;    for (int i = 0; i < 5; i++)      {         tmp[i] = thread(Func);     }    for (auto it = tmp.begin(); it != tmp.end(); it++)      {         it->join();     } }但是运行结果得到段错误,请问是为什么
查看完整描述

2 回答

?
AAnonymous

TA贡献62条经验 获得超31个赞

错误贴出来

另外,你觉得 for (auto it : tmp) 有值拷贝的话,换成引用就没有拷贝了 for (auto &it : tmp)

查看完整回答
反对 回复 2018-07-31
?
呼唤远方

TA贡献1856条经验 获得超11个赞

最基本的问题。第一个循环里面对vector居然不用push_back

查看完整回答
反对 回复 2018-07-29
  • 2 回答
  • 0 关注
  • 1791 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信