gpt4 book ai didi

C++ vector 有效地添加元素

转载 作者:太空狗 更新时间:2023-10-29 19:46:10 24 4
gpt4 key购买 nike

假设我有以下代码:

#include <iostream>
#include <vector>
using namespace std;

class X {
public:
int x[1000];
X(int y) { for (int i = 0; i < 1000; i++) x[i] = y; }
};

int main() {
vector<X> v;
X x0(0);
X x1(1);
X x2(2);
v.push_back(x0);
v.push_back(x1);
v.push_back(x2);
cout << v[2].x[33] << endl;
return 0;
}

如果我理解正确,在我的代码中,我在堆栈上为 x0x1x2 分配内存,然后复制它们内容到 vector 为我分配的内存中。此外,据我所知,移动语义在这里无济于事,因为它并不完全像 X 持有指向位于其他地方的资源的指针。

我是否可以在vector分配给我的原始内存块上直接调用构造函数?如果不是,处理此类情况的正确方法是什么?

最佳答案

您需要使用 C++11 的 emplace_back

http://en.cppreference.com/w/cpp/container/vector/emplace_back

此外,如果您担心过多的复制/移动,请尝试从 v.reserve(3) 开始。

关于C++ vector 有效地添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16679400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com