我想看看 push_back 和 emplace_back 之间的区别,因为在几个地方我读到了建议,因为现在最好使用 emplace_back,因为“它可以完成 push_back 可以做的所有事情,甚至更多”,所以我希望 ti 更有效。但令我惊讶的是
#include <iostream>
#include <vector>
class A
{
public:
A() {std::cout << "A const" << std::endl;}
~A() {std::cout << "A dest" << std::endl;}
A(const A& a) {std::cout << "A copy const" << std::endl;}
A(A&& a) {std::cout << "A move const" << std::endl;}
A& operator=(const A& a) {std::cout << "A copy operator=" << std::endl; return *this; }
A& operator=(A&& a) {std::cout << "A move operator=" << std::endl; return *this; }
};
int …Run Code Online (Sandbox Code Playgroud) 是否总是在 C++ 中class并且struct仅在默认访问说明符上有所不同?或者在某些早期版本中,C++struct更像 C struct?
我不太明白为什么 std::shared_ptr 被认为是“沉重的”和“昂贵的”,但 std::array 的“性能与普通(c 风格)数组相同”?和 shared-ptr 一样,我们有指针和两个计数器:用于共享和弱引用。在 std::array 中,我们有一个指向数据的指针和它的大小(基本上与 shared_ptr 中的指针计数相同)。似乎是相同的开销,尽管它写的到处都是“C 样式数组的性能和可访问性”。