小编Nic*_*ick的帖子

C++11 功能 std::map::at 在旧版本的 C++ 上编译

下面的代码使用c++11 中引入的代码,但是,在 g++ 和 cmake 中std::map::at指定旧版本(我已经尝试过-std=c++03,-std=c++0x和)时,它仍然会被编译。-std=c++98其他 c++11 功能不起作用,例如基于范围的 for 循环。

#include <iostream>
#include <map>

int main() {
    std::map<int, int> my_map;
    my_map[0] = 1;
    std::cout << my_map.at(0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

g++命令:

g++ -std=c++03 -o main *.cpp
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt:

cmake_minimum_required(VERSION 2.6)
project(test)

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++03")
add_executable(main main.cpp)
Run Code Online (Sandbox Code Playgroud)

两种情况下的输出:

1
Run Code Online (Sandbox Code Playgroud)

这里可能有什么问题?提前致谢。

c++ g++ cmake c++11 c++03

6
推荐指数
1
解决办法
505
查看次数

C++仅在std :: map中初始化键

我正在寻找一种方法来初始化std :: map中的第一个值,然后根据键初始化第二个值.这是我的代码:

#pragma once
#include <string>
#include <map>

class Student
{
public:

    Student(
        double Score_Maths,
        double Score_Eng,
        double Score_Chem,
        double Score_Bio,
        double Score_His
        );
    ~Student();


private:

    std::string Surname;
    std::map<std::string, double> Subject_Scores = { {"Maths"}, {"English"}, {"Chemistry"}, {"Biology"}, {"History"} };

};
Run Code Online (Sandbox Code Playgroud)

我想要做的是,在类中已经有了这些键,然后使用构造函数初始化值,但当然在初始化地图时显示错误,任何帮助?

c++ class stdmap

0
推荐指数
1
解决办法
239
查看次数

标签 统计

c++ ×2

c++03 ×1

c++11 ×1

class ×1

cmake ×1

g++ ×1

stdmap ×1