【发布时间】:2020-02-20 12:04:11
【问题描述】:
我的 C++ 编译器标识是 GNU 4.4.1
我认为从 c++ 11 开始,您可以通过这种方式初始化向量:
const std::vector<int> myVector = {1, 2, 3};
const std::vector<int> myVector2{1, 2, 3};
不幸的是,我没有使用 c++ 11,所以 myVector 只能由构造函数初始化。 我需要创建一个永远不会被修改的向量。它必须由类中的不同函数共享,因此它也可以是静态的,甚至是类成员。 有没有办法让我的向量在 c++98 中定义时被初始化,就像上面的例子一样,或者类似的东西?
【问题讨论】:
-
是的,这恰好被称为“动态初始化”,在每本 C++ 书籍中都应该有很多示例。
-
C++98 中的问题不在于你的向量是 const 还是非常量,而是标准阻止了花括号初始化。所以试试这个:
std::vector<int> vi {1, 2, 3};或std::vector<int> vi = {1, 2, 3};// 它不起作用。在那些日子里,你必须推动元素。 -
“很遗憾,我没有使用 c++ 11,所以 myVector 只能由构造函数初始化” 好吧,即使在 C++11 之后,任何对象,包括
std::vector,只能使用构造函数“初始化”(创建)。只能使用 C++11std::initializer_list,因为有一个定义的构造函数接受它:)
标签: c++ constants stdvector c++98