【发布时间】:2017-04-17 06:53:02
【问题描述】:
我在试用 codefights.com 并注意到有人回答了一个问题,该问题涉及在向量中给出所有最长的字符串:
std::vector<std::string> r, allLongestStrings(std::vector<std::string> a) {
int b=0;
for (s:a) if (s.size()>b) b=s.size();
for (s:a) if (s.size()==b) r.push_back(s);
return r;
}
他在函数的返回类型说明符中声明了一个变量,谁能告诉我为什么允许这样做?我没有在我的机器上编译,也找不到执行此操作的 gcc 扩展,在此先感谢:)。
【问题讨论】:
-
您确定该解决方案有效吗?正如所写,这似乎不是有效的 C++。
-
在任何情况下都不是有效的 C++。某些版本的 GCC 允许这种形式的 ranged-for,但后来因为标准禁止它而被删除。至于在返回类型中声明一个变量……什么?
-
我知道!,for循环也让我感到困惑,但它在codefights网站上工作并通过了所有测试:S
-
我会说意图是
std::vector<std::string> r; std::vector<std::string> allLongestStrings(......);
标签: c++ gcc gcc-extensions