65,187
社区成员




template<typename T>
struct A
{
T *data_;
}
stl的vector,map, hash或list
底层都是透过pointer来动态分配你要
处理的资源--T的,所以他们的stack不会
因为你放了很多个T就膨胀
std::map<std::string, int> A;
A.insert(std::make_pair("aaaa", 0));
//insert几百万笔资料
这种形式的话,不管你insert的是几笔资料都好
stack的大小都一样
因为只有你的map会占用stack,map管理的资源
是不会占用stack的,不管他们是XXX或YYY都一样
他们是放在heap中的
如果有那个stl可以动态把这些resource放在stack上
的话还请告诉我
如果你需要的是一个阵列,例如std::string A[100000]
那么你可以考虑使用std::vector<std::string> A(100000);
struct A
{
int a;
int b;
}
auto a = new A;
请问a是保存在heap还是stack?
同理,stl的hash和map
底层也是靠pointer分配<type1, type2>的memory的
不管你放了几笔type1,type2
占用的stack都不会因此而膨胀,因为<type1, type2>和
struct A一样,是放在heap上的
除非你是这样写再来担心会不会消耗太多stack吧
std::string A[100000];