我可以想到三种填充方式 std::vector
假设我们有
vector<int> v(100, 0);
Run Code Online (Sandbox Code Playgroud)
然后我想要它(1,1,1).我们可以做的:
v.clear();
v.resize(3, 1);
Run Code Online (Sandbox Code Playgroud)
要么
v = vector<int>(3, 1);
Run Code Online (Sandbox Code Playgroud)
我学到了另一种方法:
vector<int>(3, 1).swap(v);
Run Code Online (Sandbox Code Playgroud)
第一个问题是:它们中的任何一种都是最好的方法吗?
第二个问题:假设v在主要功能之外被宣布.根据这个答案,存储器将被分配在数据段中.如果我使用第二种或第三种方法,是否会在堆栈上分配内存?
在C++中,在编译器放弃之前,堆栈段可以增长多少,并说它不能为堆栈分配更多内存.
在linux(fedora)32位机器上使用gcc.