何时使用 std::begin 和 std::end 而不是容器特定版本[重复]

2023-12-12

是否有任何一般偏好或规则来解释何时应使用容器特定版本的 begin 和 end 而不是自由函数std::begin and std::end?

据我了解,如果函数是模板,其中容器类型是模板参数,那么std::begin and std::end应该使用,即:

template<class T> void do_stuff( const T& t )
{
    std::for_each( std::begin(t), std::end(t), /* some stuff */ );
}

在其他场景(例如已知容器类型的标准/成员函数)中又如何呢?使用还是更好的做法std::begin(cont) and std::end(cont)或者应该容器的成员函数cont.begin() and cont.end()被优先考虑?

我是否正确地假设通过调用对性能没有任何好处?cont.end() over std::end(cont)?


自由函数版本比容器的成员函数更通用。我可能会在通用代码中使用它,其中容器的类型事先未知(并且可能是数组)。在代码的其余部分(即当容器固定且已知时)我可能会使用c.begin()由于惯性。我希望关于 C++ 的新教科书会推荐自由函数版本(因为它永远不会更糟,有时甚至更好),但这必须赶上常见用法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时使用 std::begin 和 std::end 而不是容器特定版本[重复] 的相关文章

  • Poco c++Net:Http 从响应中获取标头

    我使用 POCO C Net 库进行 http 我想尝试制定持久缓存策略 首先 我认为我需要从缓存标头中获取过期时间 并与缓存值进行交叉检查 如果我错了 请告诉我 那么我如何从中提取缓存头httpResponse 我已经看到你可以用 Jav
  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • 解析 JWT 令牌以仅获取有效负载内容,无需 C# 或 Blazor 中的外部库

    我正在使用 Blazor 编写可以访问 JWT 的客户端应用程序 我想知道一种简单的方法来读取令牌有效负载内容而不添加额外的依赖项 因为我不需要其他信息 也不需要验证令牌 我认为解析有效负载内容应该足够简单 只需将其写入方法即可 JwtTo
  • linq 中使用字符串数组 c# 的 'orderby'

    假设我有一个这样的方法定义 public CustomerOrderData GetCustomerOrderData string CustomerIDs var query from a in db Customer join b in
  • 从代码中,如何创建对存储在附加属性中的对象的属性的绑定?

    我们有一个继承的附加属性来存储一个对象 在可视化树的更下方 我们希望从代码绑定到该对象的属性 通常我们像这样构建绑定的路径部分 var someBinding new Binding Path new PropertyPath Attach
  • 为什么'enable_if'不能用于禁用这里声明

    include
  • 获取 boost Spirit 语法中的当前行

    我正在尝试使用 boostspirit 获取正在解析的文件的当前行 我创建了一个语法类和结构来解析我的命令 我还想跟踪在哪一行找到命令并将其解析到我的结构中 我将 istream 文件迭代器包装在 multi pass 迭代器中 然后将其包
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • 使用具有抗锯齿功能的 C# 更改抗锯齿图像的背景颜色

    我有一个图像需要更改背景颜色 例如 将下面示例图像的背景更改为蓝色 然而 图像是抗锯齿的 所以我不能简单地用不同的颜色替换背景颜色 我尝试过的一种方法是创建第二个图像 仅作为背景 并更改其颜色并将两个图像合并为一个图像 但是这不起作用 因为
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • 使用 GCC 生成可读的程序集?

    我想知道如何使用GCC http en wikipedia org wiki GNU Compiler Collection在我的 C 源文件中转储机器代码的助记符版本 这样我就可以看到我的代码被编译成什么 你可以使用 Java 来做到这一
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • 在 OpenGL 中渲染纹理 1 到 1

    所以我想做的是使用 OpenGL 和 C 将纹理渲染到平面上 作为显示图像的一种方式 但是我需要确保在渲染纹理时没有对纹理进行任何处理 抗锯齿 插值 平滑 模糊等 这是 OpenGL 处理渲染纹理的默认方式吗 或者是否需要设置一些标志才能禁
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • 在 C#.NET 中安全删除文件

    在我正在做的一个项目中 我想为用户提供 安全 删除文件的选项 例如 用随机位或 0 覆盖它 在 C NET 中是否有一种简单的方法可以做到这一点 效果如何 你可以调用系统内部删除 http technet microsoft com en
  • INotifyPropertyChanged 和 propertyName

    我一直不确定它的含义propertyName实施时INotifyPropertyChanged 所以一般来说你实现INotifyPropertyChanged as public class Data INotifyPropertyChan
  • 如何使用placement new重新初始化该字段?

    我的课程包含字段 private OrderUpdate curOrderUpdate 我一遍又一遍地使用它 经常需要重新初始化 for int i 0 i lt entries size i auto entry entries i ne
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc

随机推荐

  • 生成 10 的倍数的随机数

    我希望在两个范围之间创建一个 10 倍数的随机数 例如 如果我向函数提供参数0 100它将返回以下数字之一 0 10 20 30 40 50 60 70 80 90 100 但没有什么像63 or 55 是的 我知道这违背了真正的 随机性
  • 如何在 Android 上显示警报对话框?

    我想显示一个对话框 弹出窗口 并向用户显示一条消息 显示 您确定要删除此条目吗 带有一个 删除 按钮 什么时候Delete被触及 它应该删除该条目 否则什么也没有 我已经为这些按钮编写了一个单击侦听器 但是如何调用对话框或弹出窗口及其功能
  • 在 JS/jQuery 中触发 keypress/keydown/keyup 事件?

    在 JS 和 或 jQuery 中模拟用户在文本输入框中输入文本的最佳方法是什么 I don t想要实际在输入框中输入文本 我只想触发所有事件handlers通常由用户在输入框中输入信息来触发 这意味着焦点 按键 按键 按键和模糊 我认为
  • AsyncTask 内的 Android NetworkOnMainThreadException

    当我尝试使用 google calendar api 时 我在 ICS 上遇到问题 为了获取事件列表 我有一个 AsyncTask 并在 doInBackground 内部进行服务调用 但仍然收到 NetworkOnMainThreadEx
  • SublimeREPL 和 IPython

    当我尝试将 IPython 与 SublimeREPL 一起使用时 我失败了 我的设置是 Windows 8 1 Sublime Text 3 C Python34 C Python27 C Anaconda3 Scripts gt Her
  • SwiftUI 和 AppKit:使用关闭对话框询问是否允许应用程序退出

    我正在使用 Big Sur 和 SwiftUI 以及 SwiftUI 生命周期 我想实现一个警报 询问用户是否可以退出应用程序 SwiftUI 怎么可能做到这一点 它应该看起来像这样 可以使用此代码 此代码打开Alert仅在关键窗口中 im
  • SQL为每个年龄返回100个随机行

    对于每个 i Age 0 100 我想使用所选数据为每个年龄返回 100 个随机行 我不确定是否应该使用 while 循环来完成此操作 或者是否应该使用带有限制的 group by 来完成此操作 我看过很多不同的例子 但我仍然很困惑 SEL
  • 如何在c#中将数组的内容打印到标签[重复]

    这个问题在这里已经有答案了 我想从每个数字之间用逗号分隔的标签显示数组的内容 num1 num6 是从文本框转换而来的整数变量 到目前为止我已经做到了这一点 int number new int 6 num1 num2 num3 num4
  • 在配置中找不到指定的命名连接,不适合与 EntityClient 提供程序一起使用,或者无效

    我有一个实体框架对象 当我将其添加到我的项目中时 connectionstring被添加到app config in the connectionstring部分 但是当我想创建新的entitycontext并使用这个connections
  • 调整 AudioUnit 缓冲区的长度

    我的问题涉及音频单元 为了设计适用于 iPhone 的变声应用程序 使用 Objective C xCode 我使用此网站上的 RemoteIO audioUnit 示例 http atastypixel com blog using re
  • Odoo 10:从向导中调用确认表(是/否)

    我想在我的采购订单中添加一个 取消 按钮 此按钮会将我的记录状态更改为 已取消 当用户单击此按钮时 脚本会验证所有购买查询和提供商订单 如果有任何订单尚未完成或取消 我想添加一个弹出窗口来警告用户有关它们的信息 用户可以取消操作或追查 并取
  • 将 List.Contains 转换为表达式树

    相关 创建具有 3 个条件的 Lambda 表达式 将包含转换为表达式树 在我之前的问题的下面 我遇到了我想写的这个查询Expression Tree版本 List
  • twitter-bootstrap 按钮 javascript 不起作用

    我有一个控制组 其中一个按钮组作为复选框 如下所示 div class control group div
  • 在 Javascript 中将字符串添加到数字

    我有功能addNumber如果我单击具有特定值的按钮 该值将连接到变量 b 但如果 a 的值不是数字 则该函数不起作用 我缺少什么 我认为该函数使用参数 a 就像它是一个字符串一样 否则 数字就会被累加起来 因此 如果b 0 a x 的结果
  • 已安装的软件包在 Google Cloud Shell 中消失

    我尝试在 Google Cloud Platform Console 中安装一堆 python 包 但磁盘空间不足 安装失败 有趣的是 在某些时候 网络连接丢失了 我应该重新连接它 然后我检查了一些在尝试安装其他 python 软件包之前已
  • 从 Python 运行 bash 脚本

    我需要从 Python 运行 bash 脚本 我让它按如下方式工作 import os os system xterm hold e scipt sh 这不完全是我正在做的事情 但几乎是我的想法 工作正常 打开一个新的终端窗口 我将其保留用
  • 合并具有多个匹配项的数据框时仅选择第一行

    我有两个数据框 数据 和 分数 并想将它们合并到 id 列上 data data frame id c 1 2 3 4 5 state c KS MN AL FL CA scores data frame id c 1 1 1 2 2 3
  • JavaScript 错误:“不是函数”

    看起来 smth 不是函数 是 JavaScript 中一个非常常见的问题 但是在查看了相当多的线程之后 我仍然无法理解在我的情况下是什么导致了它 我有一个自定义对象 定义为 function Scorm API 12 var Initia
  • phpunit 中未定义的 action()

  • 何时使用 std::begin 和 std::end 而不是容器特定版本[重复]

    这个问题在这里已经有答案了 是否有任何一般偏好或规则来解释何时应使用容器特定版本的 begin 和 end 而不是自由函数std begin and std end 据我了解 如果函数是模板 其中容器类型是模板参数 那么std begin