使用支撑的init列表在向量中插入新元素
Inserting a new element in vector using a braced init-list
给定以下结构:
struct TestStruct
{
int mA;
int mB;
};
以及以下容器:
std::vector<TestStruct> _testContainer;
编译器在尝试使用支持的init列表添加项时抛出错误,如下所示:
_testContainer.push_back({1,2});
我使用的是visual studio 2010年的C++编译器,这可能是罪魁祸首。这是有效的C++还是我遗漏了什么?
MSVS 2010不符合C++11。我建议升级到MSVS 2015,然后再试一次。正如你从这个例子中看到的那样
#include <iostream>
#include <vector>
struct foo
{
int a;
int b;
};
int main(void) {
std::vector<foo> data;
data.push_back({1,2});
}
实时示例
没关系。
我使用的是visual studio 2010年的C++编译器,这可能是罪魁祸首。
很可能是,VS2010不支持当前的语言标准。
这是有效的C++还是我遗漏了什么?
是的,它是有效的c++语法。
根据C++11标准,这应该是可以的:
struct foo {
int a;
int b;
};
int main() {
std::vector<foo> data;
data.push_back({1,2});
return 0;
}
或者,你可以使用这个:
int main() {
std::vector<foo> data;
data.emplace_back(1,2);
return 0;
}
MSVC在更新的标准方面仍然存在问题,升级到2013年甚至2015年应该会有所帮助。
相关文章:
- 将二维数组的所有元素插入到一维数组中
- 静态堆栈函数不会 1) 输入第一个元素 2)添加新元素时识别旧元素
- 在二叉搜索树中插入新元素
- 如何输入数组的元素,每次获得新元素时,我们将其放在数组的中间?
- 如何将元素插入和迭代到这种映射.C++
- 无法在构造函数中执行设置元素插入
- 将数组的元素插入映射的时间复杂度是多少?
- 如何将元素插入到标准::地图的共享指针中?
- 将新元素添加到列表中,并返回对该元素的引用?
- 在指向对象的指针的动态数组上插入新元素
- 新元素将在std :: set中插入哪里
- 在unordered_map/unordered_set中插入/放置新元素时的提示
- 插入新元素时结束迭代器会获得更新
- 如何重新组合地图并将元素插入新地图
- 使用支撑的init列表在向量中插入新元素
- 将新元素插入哈希表
- 我可以让 std::list 按顺序插入新元素吗?或者必须使用std::sort
- 插入一个新元素unordered_set:提示应该是 end()
- 在运行递归函数时将新元素插入向量时出现问题
- 使用memcpy移动数组并在给定位置插入一个新元素