使用 std::vector 无效
Using std::vector does not work
为什么下面的代码不能编译,
#include <vector>
using std::vector;
vector<int> v; // Error: too few template arguments, expected 2
但是使用 map
(和 pair
、set
、...)而不是 vector
的相同代码有效吗?
#include <map>
using std::map;
map<int, int> m; // OK
而且这段代码也能正常工作:
#include <vector>
using namespace std;
vector<int> v; // OK
我知道 std::vector
的构造函数有两个参数(类型和分配器),但为什么 vector
的行为与其他容器如此不同?
UPD:对不起,这是我的错误。实际上代码确实可以编译,但 CLion 将其标记为错误。所以这是 CLion 的错误。
尚未修复 CLion 错误:https://youtrack.jetbrains.com/issue/CPP-5758#u=1454575544687。
作为解决方法,您可以尝试使用 libstdc++ 而不是 libc++,请参阅 https://youtrack.jetbrains.com/issue/CPP-5758#comment=27-2389700。
为什么下面的代码不能编译,
#include <vector>
using std::vector;
vector<int> v; // Error: too few template arguments, expected 2
但是使用 map
(和 pair
、set
、...)而不是 vector
的相同代码有效吗?
#include <map>
using std::map;
map<int, int> m; // OK
而且这段代码也能正常工作:
#include <vector>
using namespace std;
vector<int> v; // OK
我知道 std::vector
的构造函数有两个参数(类型和分配器),但为什么 vector
的行为与其他容器如此不同?
UPD:对不起,这是我的错误。实际上代码确实可以编译,但 CLion 将其标记为错误。所以这是 CLion 的错误。
尚未修复 CLion 错误:https://youtrack.jetbrains.com/issue/CPP-5758#u=1454575544687。
作为解决方法,您可以尝试使用 libstdc++ 而不是 libc++,请参阅 https://youtrack.jetbrains.com/issue/CPP-5758#comment=27-2389700。