升级Win下工具链以支持C++17

上次更新后使用的TDM GCC 5.1仅支持了C++11和部分C++14功能。这次选用MinGW-w64提供的Win下的工具链,地址如下:

https://sourceforge.net/projects/mingw-w64/

上次我也看到这个网站,但我想当然的以为最后更新是文件夹上标注的2015年。其实内部MinGW-w64的GCC已经支持到7.1啦

选择Win32,thread model选POSIX(Win32线程模型版本的不支持C++11的多线程),dwarf的Build,下载解压即可。

随后导入到Codeblocks中一试,完美~!

已标记关键词 清除标记
使用CodeBlocks 17.12版本,win10系统。 下面main函数中的while循环内部的两个Q.display()输出的内容不同,期间只是cin了一个数,不知道是什么原因。(Q.display()输出的是theQueue的前size个数值) 还有enqueue函数中的sequence的值也会莫名其妙的改变,不懂。。 求教~ ``` #include <iostream> using namespace std; class Queue { public: Queue(int theSize); bool enqueue(int number); int dequeue(); int peek(int number) const; int getSize() const; void display() const; private: int size; int theQueue[]; int sequence;//记录当前入列的元素位置。 }; int main() { int sizeValue,theNumber; cout<<"Enter the queue's size(less than 11): \n"; cin>>sizeValue; Queue Q(sizeValue); while (true) { Q.display(); cout<<"Please input a number to fill up the queue: \n"; cin>>theNumber; Q.display(); if (Q.enqueue(theNumber)==false) break; } cout<<"Now the queue have "<<Q.getSize()<<" elements,they are:\n"; Q.display(); cout<<"The first element in the queue is: "<<Q.dequeue()<<endl; cout<<"Now the queue have "<<Q.getSize()<<" elements,they are:\n"; Q.display(); return 0; } Queue::Queue(int theSize) { int aQueue[10]={0,0,0,0,0,0,0,0,0,0}; for (int i=0;i<10;i++) theQueue[i]=aQueue[i]; size=theSize; sequence=0;//初始入列元素的位置为0。 } bool Queue::enqueue(int number) { theQueue[sequence]=number; sequence=sequence+1;//入列元素位置后移一位。 if (sequence>=size) { cout<<"The queue is full!\n"; return false; } else return true; } int Queue::dequeue() { int firstNumber; firstNumber=theQueue[0]; for (int i= 1;i<size;i++) theQueue[i-1]=theQueue[i]; size=size-1; return firstNumber; } int Queue::peek(int number) const { return theQueue[number]; } int Queue::getSize() const { return size; } void Queue::display() const { for (int j=0;j<size;j++) cout<<theQueue[j]<<" "; cout<<endl; } ```
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页