【发布时间】:2021-09-13 22:45:53
【问题描述】:
考虑以下代码:
#include <algorithm>
#include <iostream>
#include <list>
int main() {
std::list<int> v = {1, 3, 4};
std::cout << v.size() << std::endl;
v.resize(0);
std::cout << v.size() << std::endl;
}
按预期编译输出后是
3
0
现在我添加一组差异。
#include <algorithm>
#include <iostream>
#include <list>
int main() {
std::list<int> x = {1, 3, 4};
std::list<int> y = {1, 2, 3, 5};
std::list<int> v;
x.sort();
y.sort();
std::cout << v.size() << std::endl;
auto it =
std::set_difference(x.begin(), x.end(), y.begin(), y.end(), v.begin());
std::cout << v.size() << std::endl;
v.resize(0);
std::cout << v.size() << std::endl;
}
输出是
0
4
4
为什么第一个示例的调整大小有效,而第二个示例无效?
【问题讨论】:
标签: c++ set-difference