C++中的a std::vector和a有什么区别std::array?什么时候应该优先于另一个?各自的优点和缺点是什么?我的所有教科书都列出了它们是如何相同的.
由于std::list和std::vector存在,是有什么原因在C++中使用传统的C数组,还是应该尽量避免,只是喜欢malloc?
我是初学C++程序员,所以我学会了使用数组而不是向量(这似乎是做事情的一般方法,然后转向向量).
我注意到很多关于SO的答案建议使用向量而不是数组,而字符串则用于char数组.看来这是用C++编写代码的"正确"方法.
总而言之,它何时值得使用经典数组/ char*(如果有的话)?
我试图在堆栈上创建一个固定大小的字符数组(它确实需要堆栈分配).我遇到的问题是我无法让堆栈为数组分配超过8个字节:
#include <iostream>
using namespace std;
int main(){
char* str = new char[50];
cout << sizeof(str) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
版画
8
Run Code Online (Sandbox Code Playgroud)
如何在堆栈上分配固定大小的数组(在这种情况下为50个字节但可能是任何数字)?
我正在构建一个C++类A,需要包含一堆指向其他对象的指针B.
为了使类尽可能通用,我std::vector<B*>在这个类中使用了一个.这样B就可以保留任意数量的不同A(对可以有多少个没有限制).
现在这可能有点过分,因为大多数时候,我将使用A只能B*在向量中包含2或4 的类型的对象.
由于将要进行大量的迭代计算,涉及类的对象A,我想知道B当只B需要两个时,使用s 的向量是否涉及很多开销.
当存在少于3个时,我是否应该重载该类以使用另一个容器B?
使事情变得更清楚: A 是多极并且 B 是磁性线圈,构成多极