草庐IT

c++ - 在学习 BOOST 替代品之前,我应该精通 STL 库吗?

coder 2023-05-03 原文

在学习 C++ 时限制自己使用 STL 库,然后在您相当精通 vanilla C++ 后处理 boost 及其添加是否有意义?

还是应该在学习 C++ 的同时直接进入 BOOST?

最佳答案

STL 包含一些核心概念。 Boost 在它们的基础上进行构建和扩展。如果您了解它们,那么继续使用 Boost 可能对您有用。如果没有,我会从 STL 开始。

  • 各种容器类型之间的区别(vectorlistdeque 等序列,以及 map 等关联>、set 及其 multi*unordered_* 变体)。有时你可以把一个换成另一个——有时你不能。了解他们的优势和局限。
  • 迭代器的作用,以及它们如何在容器和算法之间架起一座桥梁。 (我发现我反复使用这个)。
  • 为什么会有标准算法:它们通常是极少量的代码,因此它们存在的原因可能并不明显。了解它们使用哪些容器,以及如何将它们专门用于特定情况(例如,了解通用 copy 与专门用于 const char *copy 有何不同>)。
  • 如何以及何时使用特征类。
  • 如何使用 Binder (bind1stptr_funmem_fun):语法会掩盖它们的实用性。
  • 如何使用string -- 以及何时 使用它。 (所有字符串类都有权衡:了解标准类的优缺点是有教育意义的)。
  • streams和streambufs的区别:如何使用前者进行格式化I/O(尝试从流中读取字符串:没有应有的那么直接),而后者如何做low-level fast I/O/O。

用于设计 STL 的原则是在 Boost 库的基础上构建和扩展的。如果你得到它们,Boost 是可以管理的。如果您不这样做,并且 Boost 最终难以跟上,您可以返回 STL 了解您的方位。

(总的来说,Boost 确实突破了语言的界限。如果您决定真正插入自己的 C++ 知识,并测试您是否真的知道您认为自己知道的内容,那么它可以提供一个有趣的挑战。我我已经使用 C++ 十多年了,已经教过其他人如何使用它,从那时起已经熟练掌握了许多高级语言,而 Boost 仍然让我感到惊讶。它非常有用,但它不是微不足道的)。

关于c++ - 在学习 BOOST 替代品之前,我应该精通 STL 库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/548751/

有关c++ - 在学习 BOOST 替代品之前,我应该精通 STL 库吗?的更多相关文章

  1. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  2. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  3. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  4. ruby - 如何在 Rails 4 中使用表单对象之前的验证回调? - 2

    我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser

  5. ruby-on-rails - 更好的替代方法 try( :output). try( :data). try( :name)? - 2

    “输出”是一个序列化的OpenStruct。定义标题try(:output).try(:data).try(:title)结束什么会更好?:) 最佳答案 或者只是这样:deftitleoutput.data.titlerescuenilend 关于ruby-on-rails-更好的替代方法try(:output).try(:data).try(:name)?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

  6. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  7. ruby - 使用 `+=` 和 `send` 方法 - 2

    如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

  8. ruby-on-rails - 带有 Zeus 的 RSpec 3.1,我应该在 spec_helper 中要求 'rspec/rails' 吗? - 2

    使用rspec-rails3.0+,测试设置分为spec_helper和rails_helper我注意到生成的spec_helper不需要'rspec/rails'。这会导致zeus崩溃:spec_helper.rb:5:in`':undefinedmethod`configure'forRSpec:Module(NoMethodError)对thisissue最常见的回应是需要'rspec/rails'。但这是否会破坏仅使用spec_helper拆分rails规范和PORO规范的全部目的?或者这无关紧要,因为Zeus无论如何都会预加载Rails?我应该在我的spec_helper中做

  9. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  10. ruby-on-rails - 如何处理 Grape 中特定操作的过滤器之前? - 2

    我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?

随机推荐