我在线复制了这段代码。它是关于排序大数字:
int n;
cin >> n;
vector<string> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
std::sort(a.begin(), a.end(),
[](const string &left, const string &right)
{
if (left.size() != right.size())
{
return left.size() < right.size();
}
else
{
return left < right;
}
});
for (const string &s : a) {
cout << s << '\n';
}
有人可以用语言解释这些行:
[](const string &left, const string &right)
和
for (const string &s : a)
我从来没有遇到过库以及像所用代码一样的for循环。 谢谢!
答案 0 :(得分:0)
至少详细了解C++11(或C++14或C++17),例如一些好的C++ programming book(任何早于C ++ 11的标准都已过时,而C ++ 11自其前身以来已经发展了很多,所以你几乎应该把C ++ 11看作一种新的编程语言)。还要看一些C++ reference网站。
[](const string &left, const string &right)
启动lambda expression,即anonymous function closure。
然后你有一个range-for循环:for (const string &s : a)
甚至可能是for (const auto& s: a)
或for (auto s: a)
,因为auto
specifier带来了有限形式的type inference {3}}
另请阅读SICP以改进您对编程的看法(它不是关于C ++,而是一本优秀且可免费下载的编程简介)。