问题标签 [emplace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++11 - 错误:使用 make all 编译 Liquibook 时没有名为 'emplace' 的成员
我已经设置了所有的环境变量,Makefile是使用MPC生成的,错误出现在make all之后。我尝试将我的 gcc 升级到 4.9,但仍然出现同样的错误。请帮忙!
c++ - emplace 和默认构造函数
鉴于以下代码,我很惊讶try_emplace
无法使用 main 函数第一行中演示的默认构造函数,而是抱怨没有匹配的函数调用Element::Element(double, double)
. 我是否误解了编译器创建默认构造函数或使用的方式try_emplace
?我当然可以通过为 定义一个所有参数 ctors 来让这段代码工作Element
,但这似乎是多余的。
c++ - 创建移动构造对象的向量
我有一个包含构造函数的类,该构造函数在构造过程中移动对象:
当我只需要一个实例时,可以毫无问题地构造类的对象:
但是,我无法将 SomeClass 类型的任何对象放置(或推送)到std::vector<SomeClass>
.
请你解释一下为什么不能放置物体?我认为使用的完美转发emplace_back
将允许以SomeClass
与可以构造单个实例相同的方式构造就地实例。
请您还可以解释一下如何修改事物以允许构建 astd::vector<SomeClass>
吗?
我的猜测是,由于构造函数参数是通过 move 传递的,因此它们不会一直转发到方法中的构造函数emplace_back
。
c++ - C++17 中 std::vector::emplace_back 的返回值的用例是什么?
我在cppreference.com中读到 new(自 C++17 起)std::vector::emplace_back
具有对插入元素的引用的返回值。
返回值
- (无)(C++17 前)
- 对插入元素的引用。(C++17 起)
我在想,在向向量插入元素时,为什么我们需要引用它?这怎么可能有用,或者这个新回报的用例是什么?
这是我写的一个示例代码,用于查看该功能。
c++ - 为什么向量构造函数在 unordered_map emplace 中使用时只取参数的最后一个值?
我正在尝试使用 unordered_map::emplace 来实现 unordered_map>
我期望输出为“99”,因为我用 (2,9) 构造了向量。但实际结果是“000000000”,其中 emplace 将向量构造为 (9),默认值为 0,整数数为 9。我用其他参数值玩了一点,并意识到 emplace 只取矢量参数中的最后一个值。为什么?
我仍然可以通过做来完成目标
但只是想知道为什么,并保存一行代码。
c++ - 将一对插入 std::vector 时 emplace_back() 与 push_back
我定义了以下
我正在用 c++11 编译。第三行是有问题的,但我认为您可以emplace_back()
在任何您拥有的地方使用push_back()
,但这显然是错误的。为什么第三行不起作用?
c++ - C++ 将 char* 字符串放入 std::vector 的更好方法?
我正在从任何 char[] char* std::string 中填充一个字符串向量,方法是将它们放置在 std::vector 中
这段代码可以工作,但看起来有点笨拙,需要三个模板来覆盖可变参数和初始化列表。
这种事情有更规范的成语吗?
我特别想处理 NULL char* 的情况,我决定跳过它而不是创建一个空字符串。
我对 nullptr 进行了尝试/捕获,但发现模板没有必要。
c++ - 通过 emplace() 将对象指针插入地图地图不起作用
我正在尝试将指针对象插入到map
通过emplace()
但它不起作用。
我已经为下面的问题创建了一个简单的表示。我正在尝试插入newFooList
指针对象类型Foo*
。
我似乎找不到为FooMap*
in创建类型的方法std::map<int, FooMap*> m_fooMapList
。应该new
在地图的第二个字段上完成吗?
在 g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28) 上
c++ - 将从不可复制派生的对象放置到向量中
我有持有指针并与他人共享它们的对象。移动它们很好,但不能复制。我想将它们存储在矢量和地图中。以下代码仅在A
没有析构函数时才有效。但是我需要一个析构函数来清理我的指针。
当我有一个析构函数时的错误:
/usr/local/include/c++/8.2.0/bits/stl_construct.h:在 'void std::_Construct(_T1*, _Args&& ...) [with _T1 = A; _Args = {A}]': ... 错误:使用已删除的函数 'OnlyMove::OnlyMove(const OnlyMove&)'
我不明白为什么。析构函数在这里扮演什么角色?
c++ - 带有左值表达式的 std::vector::emplace_back
emplace_back
与某些结构的左值一起使用是否有实际意义S
:
像这样:
而不仅仅是:
还是只是简单地滥用emplace_back
, 只是因为const S&
(因此是复制构造函数)是Args... args
inside的合法实例化emplace_back
,并且没有明确禁止?