草庐IT

make_XYZ

全部标签

c++ - std::tie 与 std::make_tuple

Thiscodecompiles但我想知道应该首选哪个版本:#include#includeusingnamespacestd;tuplereturn_tuple1(){inta=33;intb=22;intc=31;returntie(a,b,c);}tuplereturn_tuple2(){inta=33;intb=22;intc=31;returnmake_tuple(a,b,c);}intmain(){autoa=return_tuple1();autob=return_tuple2();return0;}由于该函数按值返回一个元组,因此使用std::tie应该没有任何问题,对

c++ - 综合 gnu make/gcc 教程

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于StackOverflow来说是题外话,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我刚开始学习C++,我发现很难找到关于如何使用gnumake/gcc的简短、全面的教程。任何想法(请不要将我指向官方的gnumake教程,它对我的​​目的来说太深入了;-))。 最佳答案 查书Man

c++ - 这种使用 std::make_unique 会导致非唯一指针吗?

假设我在C++中有以下代码:#include#includestructSome{Some(int_a):a(_a){}inta;};intmain(){Somesome(5);std::unique_ptrp1=std::make_unique(some);std::unique_ptrp2=std::make_unique(some);std::coutaa据我了解,唯一指针用于保证不共享资源。但在这种情况下,p1和p2都指向同一个实例some。请公布情况。 最佳答案 它们不指向相同的资源,它们各自指向不同的拷贝。可以通过删除拷

c++ - 我可以将 std::make_shared 与没有参数构造函数的结构一起使用吗?

假设我有一个像这样的struct:structS{inti;doubled;std::strings;};我可以这样做吗?std::make_shared(1,2.1,"Hello") 最佳答案 不,您不能,您必须定义自己的构造函数才能做到这一点。#include#include#includestructS{S(intii,doubledd):i(ii),d(dd){}inti;doubled;};intmain(){//Ss{1,2.1};autos=std::make_shared(1,2.1);//orwithoutcons

c++ - std::make_unique 导致大幅减速?

我最近开始使用C++14而不是C++11对我的C++代码库进行现代化改造。在用C++14中的std::make_unique替换一次出现的std::unique_ptr.reset(new...)后,我意识到我的测试套件(由大约30个C++测试程序组成)运行速度慢了大约50%。旧的C++11代码(快速):classFoo{public:Foo(size_tsize){array.reset(newchar[size]);}private:std::unique_ptrarray;};新的C++14代码(慢):classFoo{public:Foo(size_tsize){array=s

c++ - 井字游戏 AI : How to Make the Tree?

在制作井字游戏机器人时,我在试图理解“树”时遇到了很大的困难。我理解这个概念,但我不知道如何实现它们。有人可以向我展示一个如何为这种情况生成树的示例吗?还是生成树的好教程?我想困难的部分是生成部分树。我知道如何实现生成一整棵树,但不知道它的一部分。 最佳答案 想象一下,在井字游戏中的任何一点,每一个可能的Action都是一个分支。板的当前状态是根。一个Action是一个分支。现在假设(一次一个),每个分支都成为当前状态。每个可能的移动都成为一个新的分支。树的叶子是当最后一步完成并且棋盘已满时。你需要一棵树的原因是,一旦它建成,你需要

c++ - 为什么这个makefile在 'make clean'上执行一个目标

这是我当前的makefile。CXX=g++CXXFLAGS=-Wall-O3LDFLAGS=TARGET=testcppSRCS=main.cppobject.cppfoo.cppOBJS=$(SRCS:.cpp=.o)DEPS=$(SRCS:.cpp=.d).PHONY:cleanallall:$(TARGET)$(TARGET):$(OBJS)$(CXX)$(CXXFLAGS)$(LDFLAGS)$(OBJS)-o$(TARGET).cpp.o:$(CXX)$(CXXFLAGS)-c$$@clean:rm-f$(OBJS)$(DEPS)$(TARGET)-include$(DEP

c++ - 带有 std::make_unique 的 push_back 或 emplace_back

基于these中的答案questionshere,我知道使用c++14的std::make_unique肯定比直接emplace_back(newX)更可取。也就是说,是不是更喜欢打电话my_vector.push_back(std::make_unique("constructor","args"));或my_vector.emplace_back(std::make_unique("constructor","args"));也就是说,在添加由std::make_uniquestd::unique_ptr时,我应该使用push_back还是emplace_back/?====编辑=

c++ - Visual Studio 用户使用 GCC/make 的介绍

我使用VisualStudio2010用C++开发了一个工具,我也想在Linux系统上部署它。代码本身的编程完全独立于平台,仅使用STL和标准库。现在我的问题是:我没有使用Linux的经验。然而,我尝试让我编写的一些其他程序使用GCC进行编译,结果是一大堆错误向我抛出,我花了3个小时才解决-太可怕了!从这次经历中注意到,如果我尝试将当前项目移植到GCC,我认为同样的情况即将发生,而且情况会更糟。我的问题是:VisualStudio用户需要知道什么才能成功让他们的程序在Linux上运行?(我需要学习make吗?)您是否知道一个很好的资源,它不涵盖整个GCC/Linux编程的主题,而是专门

c++ - 表达式 : auto p {make_pointer()}; 的不同编译器行为

以下程序的正确行为是什么?//example.cpp#include#includestructFoo{voidBar()const{std::coutMakeFoo(){returnstd::make_shared();}intmain(){autop{MakeFoo()};p->Bar();}当我在我的LinuxRHEL6.6工作站中编译它时,我得到以下结果:$g++-vgccversion5.1.0(GCC)$g++example.cpp-std=c++14-Wall-Wextra-pedantic$./a.outFoo::Bar()但是$clang++-vclangversio