resize(n, val) 和 assign(n, val) 区别?
当开始时容器都是空,即没有旧元素,两者行为时相同的。但是当存在旧元素且将 vector 进行扩容时, assign 会将所有元素都赋值为 val ,而 resize 只会讲新元素赋值为 val ,旧元素保持不变!
#include <iostream>#include <vector>using namespace std;void printOut(vector<int> &nums) {for (int num: nums) cout << num << " ";cout << endl;}int main() {vector<int> a, b;a.resize(3, 8);b.assign(3, 6);printOut(a);printOut(b);a.resize(10, 9);b.assign(10, 4);printOut(a);printOut(b);return 0;}
输出结果为:
8 8 86 6 68 8 8 9 9 9 9 9 9 94 4 4 4 4 4 4 4 4 4
