温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++怎么为所有可能重用的操作命名

发布时间:2021-11-24 10:47:38 来源:亿速云 阅读:95 作者:iii 栏目:大数据

本篇内容介绍了“C++怎么为所有可能重用的操作命名”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

T.140:为所有可能重用的操作命名

Reason(原因)

Documentation, readability, opportunity for reuse.

文档化,可读性,重用的机会。

Example(示例)

struct Rec {
   string name;
   string addr;
   int id;         // unique identifier
};

bool same(const Rec& a, const Rec& b)
{
   return a.id == b.id;
}

vector<Rec*> find_id(const string& name);    // find all records for "name"

auto x = find_if(vr.begin(), vr.end(),
   [&](Rec& r) {
       if (r.name.size() != n.size()) return false; // name to compare to is in n
       for (int i = 0; i < r.name.size(); ++i)
           if (tolower(r.name[i]) != tolower(n[i])) return false;
       return true;
   }
);

There is a useful function lurking here (case insensitive string comparison), as there often is when lambda arguments get large.

代码中隐藏着一个有用(在不需要区分大小写时)的函数,当lambda表达式变大时通常会这样。

bool compare_insensitive(const string& a, const string& b)
{
   if (a.size() != b.size()) return false;
   for (int i = 0; i < a.size(); ++i) if (tolower(a[i]) != tolower(b[i])) return false;
   return true;
}

auto x = find_if(vr.begin(), vr.end(),
   [&](Rec& r) { compare_insensitive(r.name, n); }
);

Or maybe (if you prefer to avoid the implicit name binding to n):

或者可以这样(如果你更希望避免n上的隐式名称绑定):

auto cmp_to_n = [&n](const string& a) { return compare_insensitive(a, n); };

auto x = find_if(vr.begin(), vr.end(),
   [](const Rec& r) { return cmp_to_n(r.name); }
);
Note(注意)

whether functions, lambdas, or operators.

函数,lambda表达式,运算符都适用。

Exception(例外)

  • Lambdas logically used only locally, such as an argument to for_each and similar control flow algorithms.

    Lambda表达式逻辑上是本地使用的,例如作为一个for_each或类似的控制流算法的参数。

  • Lambdas as initializers

    Lambda表达式作为初始化器使用时。

Enforcement(实施建议)
  • (hard) flag similar lambdas

  • (困难)标记类似的lambda表达式。

“C++怎么为所有可能重用的操作命名”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI