小编Wil*_*ang的帖子

如何在Cygwin GCC 4.7.2下使用C++ 11的std :: thread

我一直在尝试使用新引入的C++ 11 std :: thread功能在Cygwin下编译多线程hello-world程序,但没有成功.我自己编译并安装了GCC 4.7.2,并且相同的代码在Linux下使用相同版本的GCC时没有任何问题.我得到的第一个错误是编译器无法识别-pthread标志.经过一段时间的研究,我注意到有人在Cygwin上说这个标志应该是-lthread.我做了更改,错误消失了,但又发生了一系列错误,告诉我线程不是std的成员.我想知道它是否是由安装过程中编译器的错误配置引起的,或者在Cygwin下根本不支持std :: thread?

c++ multithreading gcc cygwin c++11

7
推荐指数
1
解决办法
2873
查看次数

使用std :: deque :: iterator(在C++ STL中)搜索和删除某些元素

我在调用以下代码时遇到问题:

#include<deque>
using namespace std;

deque<int> deq = {0,1,2,3,4,5,6,7,8};

for(auto it = deq.begin(); it != deq.end(); it++){
    if(*it%2 == 0)
        deq.erase(it);
}
Run Code Online (Sandbox Code Playgroud)

这导致了分段错误.在查看问题后,我发现问题在于STL管理deques的迭代器的方式:如果被擦除的元素更接近deque的末尾,用于指向擦除元素的迭代器现在将指向NEXT元素,但不是前一个元素vector::iterator.据我所知,从修改的循环条件it != deq.end(),以it < deq.end()可能可能解决这个问题,但我不知道是否有遍历&在"标准形式"一个双端队列擦除某些元件,使得代码可以是其他容器类型兼容的方式同样.

c++ iterator stl deque

4
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×2

c++11 ×1

cygwin ×1

deque ×1

gcc ×1

iterator ×1

multithreading ×1

stl ×1