问题标签 [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.

0 投票
0 回答
729 浏览

c++11 - 错误:使用 make all 编译 Liquibook 时没有名为 'emplace' 的成员

我已经设置了所有的环境变量,Makefile是使用MPC生成的,错误出现在make all之后。我尝试将我的 gcc 升级到 4.9,但仍然出现同样的错误。请帮忙!

0 投票
2 回答
1071 浏览

c++ - emplace 和默认构造函数

鉴于以下代码,我很惊讶try_emplace无法使用 main 函数第一行中演示的默认构造函数,而是抱怨没有匹配的函数调用Element::Element(double, double). 我是否误解了编译器创建默认构造函数或使用的方式try_emplace?我当然可以通过为 定义一个所有参数 ctors 来让这段代码工作Element,但这似乎是多余的。

0 投票
1 回答
343 浏览

c++ - 创建移动构造对象的向量

我有一个包含构造函数的类,该构造函数在构造过程中移动对象:

当我只需要一个实例时,可以毫无问题地构造类的对象:

但是,我无法将 SomeClass 类型的任何对象放置(或推送)到std::vector<SomeClass>.

请你解释一下为什么不能放置物体?我认为使用的完美转发emplace_back将允许以SomeClass与可以构造单个实例相同的方式构造就地实例。

请您还可以解释一下如何修改事物以允许构建 astd::vector<SomeClass>吗?

我的猜测是,由于构造函数参数是通过 move 传递的,因此它们不会一直转发到方法中的构造函数emplace_back

0 投票
3 回答
436 浏览

c++ - C++17 中 std::vector::emplace_back 的返回值的用例是什么?

我在cppreference.com中读到 new(自 C++17 起)std::vector::emplace_back具有对插入元素的引用的返回值。

返回值

  • (无)(C++17 前)
  • 对插入元素的引用。(C++17 起)

我在想,在向向量插入元素时,为什么我们需要引用它?这怎么可能有用,或者这个新回报的用例是什么?

这是我写的一个示例代码,用于查看该功能。

0 投票
2 回答
47 浏览

c++ - 为什么向量构造函数在 unordered_map emplace 中使用时只取参数的最后一个值?

我正在尝试使用 unordered_map::emplace 来实现 unordered_map>

我期望输出为“99”,因为我用 (2,9) 构造了向量。但实际结果是“000000000”,其中 emplace 将向量构造为 (9),默认值为 0,整数数为 9。我用其他参数值玩了一点,并意识到 emplace 只取矢量参数中的最后一个值。为什么?

我仍然可以通过做来完成目标

但只是想知道为什么,并保存一行代码。

0 投票
2 回答
3258 浏览

c++ - 将一对插入 std::vector 时 emplace_back() 与 push_back

我定义了以下

我正在用 c++11 编译。第三行是有问题的,但我认为您可以emplace_back()在任何您拥有的地方使用push_back(),但这显然是错误的。为什么第三行不起作用?

0 投票
1 回答
550 浏览

c++ - C++ 将 char* 字符串放入 std::vector 的更好方法?

我正在从任何 char[] char* std::string 中填充一个字符串向量,方法是将它们放置在 std::vector 中

这段代码可以工作,但看起来有点笨拙,需要三个模板来覆盖可变参数和初始化列表。

这种事情有更规范的成语吗?

我特别想处理 NULL char* 的情况,我决定跳过它而不是创建一个空字符串。

我对 nullptr 进行了尝试/捕获,但发现模板没有必要。

0 投票
5 回答
1715 浏览

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) 上

0 投票
1 回答
58 浏览

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&)'

我不明白为什么。析构函数在这里扮演什么角色?

现场演示

0 投票
2 回答
607 浏览

c++ - 带有左值表达式的 std::vector::emplace_back

emplace_back与某些结构的左值一起使用是否有实际意义S

像这样:

而不仅仅是:

还是只是简单地滥用emplace_back, 只是因为const S&(因此是复制构造函数)是Args... argsinside的合法实例化emplace_back,并且没有明确禁止?