English 中文(简体)
st子如何分配物体?
原标题:How does std::vector allocate objects?

如何分配物体? 似乎它只是使用<代码>d:定位器:拨号<>/代码>,以制造记忆的一块块,但从来不使用<代码>的以下编码: 拨号:<<>>。 情况如何? <代码>已成:>只分配记忆,永远不会把物体作为记忆分配?

如果没有违约建筑者,情况如何? 在没有违约建筑者的情况下,施工者怎么说? 如果存在一个以上的参数,则是什么?

例如,根据该法典,没有违约的建筑商和 st子:定位器允许。

#include <vector>
using namespace std;

class A{
protected:
    int m;
public:
    explicit A(int a) : m(a) { }
};

int main(){
    vector<A> test;
    return 0;
}
最佳回答

这一点自C++11起就发生了很大变化。

在C++03中, Construction 只能在当地进行复制。

然而,注意到<代码>已成:特别是导线是一系列物体,但规模和容量各不相同。 也就是说,在包含有用数据的阵列部分结束之后,可以有更多的empt/em>元素。

因此,标准图书馆分配器在“建筑”和“空间分配”之间有分离关系。 。 这使得<代码>std:vector能够分配比使用更多的记忆。 当你增加新内容时,它不一定要分配更多的记忆;它只能使用它通过电话<代码>定位器:而留下的剩余记忆。

此外,注意到C++03的所有功能都增加了<代码>的内容: 作为参数摄入一个元素。 。 是的,它是一个缺省参数,但它仍是一个要素。 该元素在病媒中为copied,使用向分配器发送-ruct的方法,该方法有复印件。

在C++11中,标准集装箱必须使用<条码>定位器_traits<>: 施工/代码>功能。 这是将其参数推向实际建筑的空洞功能。 这一海峡功能(违约)。 <代码>定位器: 施工/编码> 如果这一呼吁得到很好的了解,则采用的方法。 如果是,它将尝试安装<代码>new。

这使新的<代码>emplace功能得以运作。

但是,是的,标准图书馆集装箱所载物品实际上是建构的物体。 即使分配人<代码>施工 这种方法不使用。

问题回答

It s implementation dependent, but a typical implementation uses std::allocator::allocate to allocate the block of memory, and then uses the placement new to construct, via the copy constructor (or move constructor in C++11), the instances.

当分子被抹去时,他们的信徒被直接用来摧毁物体,即使根本的记忆已经释放。





相关问题
Undefined reference

I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...

C++ Equivalent of Tidy

Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...

Template Classes in C++ ... a required skill set?

I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

typedef ing STL wstring

Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

Window iconification status via Xlib

Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?

热门标签