败犬日报 2025-08-12
1. MSVC 的版本号系统也太离谱了
产品名称 Visual Studio 2022,版本号 VS 17.x。
C++ 工具集版本 v144,对应的目录是 14.4x,对应的 cl.exe 版本号是 19.4x,_MSC_VER 取值是 194x。
2. 赋值运算符重载为 push_back
cpp
template <typename Container>
struct Inserter {
Inserter(Container& c) : c(c) {};
template <typename T>
Inserter& operator()(T&& value) {
c.push_back(std::forward<T>(value));
return *this;
}
Container& c;
};
这合理吗?其实这是一种迭代器,例如 https://en.cppreference.com/w/cpp/iterator/back_inserter.html 给出的代码,就用 fill_n 完成 push_back 操作:
cpp
int main()
{
std::vector<int> v{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::fill_n(std::back_inserter(v), 3, -1);
for (int n : v)
std::cout << n << ' ';
std::cout << '\n';
}