为Linux配置C++11编译环境的方法主要包括以下几个步骤:
- 确认当前Linux系统支持C++11语法。打开终端窗口,执行以下命令:
bash
$ gcc --version
如果返回的信息中包含”GCC 4.7″及以上版本号,那么该系统内置支持C++11语法。否则需要升级GCC编译器版本。在大多数Linux系统中,可以通过以下命令升级GCC编译器版本:
bash
$ sudo apt-get update
$ sudo apt-get install build-essential
$ sudo apt-get install gcc-4.7 g++-4.7
- 创建支持C++11语法的项目。在终端窗口中,执行以下命令:
bash
$ mkdir my_cpp11_project
$ cd my_cpp11_project
$ touch main.cpp
这里以创建名为”my_cpp11_project”的项目为例,并在项目中新建名为”main.cpp”的文件。
- 配置编译参数。在终端窗口中,执行以下命令:
bash
$ g++ -std=c++11 -o my_cpp11_program main.cpp
这条命令中的”-std=c++11″参数表示使用C++11语法进行编译,”-o”参数表示指定输出文件名,”my_cpp11_program”为输出文件的文件名,”main.cpp”为源代码文件名。
- 运行程序。在终端窗口中,执行以下命令:
bash
$ ./my_cpp11_program
如果一切顺利,应该可以在终端窗口中看到程序的输出结果。
示例1:使用Lambda表达式
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n = 10;
vector<int> v(n);
for (int i = 0; i < n; i++) {
v[i] = rand() % 100;
}
auto print = [](int x) { cout << x << " "; };
for_each(v.begin(), v.end(), print);
cout << endl;
return 0;
}
在终端窗口中,执行以下命令进行编译和运行:
$ g++ -std=c++11 -o lambda_test lambda_test.cpp
$ ./lambda_test
输出结果应该为:
47 90 32 1 67 37 22 45 63 2
示例2:使用智能指针
#include <iostream>
#include <memory>
using namespace std;
class Test {
public:
Test() { cout << "Test constructor" << endl; }
~Test() { cout << "Test destructor" << endl; }
};
int main()
{
shared_ptr<Test> ptr(new Test());
return 0;
}
在终端窗口中,执行以下命令进行编译和运行:
$ g++ -std=c++11 -o shared_ptr_test shared_ptr_test.cpp
$ ./shared_ptr_test
输出结果应该为:
Test constructor
Test destructor