草庐IT

STRUCTURE

全部标签

c++ - 如何在避免代码重复和名称冲突的同时实现同一算法的多个版本?

我用C++开发了插入排序和快速排序算法。现在,我打算创建至少四种快速排序算法的变体。他们在如何选择主元以及是否对小列表使用插入排序方面会有所不同。在Java或C#中,为避免代码重复和名称冲突,我会在单独的类文件中实现每个版本的Quicksort算法并使用继承。具体来说,我会创建以下类:QuicksortFixedPivotQuicksortRandomPivotQuicksortFixedPivotInsertion-使用插入排序对最多k个元素的子数组进行排序QuicksortRandomPivotInsertion但是,根据我的理解,像Quicksort这样的“独立”算法通常不会在C

c++ - 结构与类

//Byusingstructure:structcomplex{floatreal;floatimag;};complexoperator+(complex,complex);main(){complext1,t2,t3;t3=t1+t2;}complexoperator+(complexw,complexz){statement1;statement2;}//Byusingclass:classcomplex{intreal;intimag;public:complexoperator+(complexc){statement1;statement2;}main(){complex

C++ 集合 : how to create a map like structure

什么样的收集方法会存储一对(键和值),其中键不是唯一的(我认为从技术上讲它不能成为键)?在我程序的某处我有:typedefstruct{intnKey;stringstrFormType;}KeyPair;然后我将使用此结构将对象存储在vector中。vectorvKeyList;KeyPairMenuOne;MenuOne.nKey=1;MenuOne.strFormType="Window";vKeyList.push_back(MenuOne);MenuOne.nKey=0;MenuOne.strFormType="Window2";vKeyList.push_back(Menu

c++ - 结构/对象内的存储顺序

考虑这两种情况:structcustomType{dataType1var1;dataType2var2;dataType3var3;};customTypeinstance1;//Assumevar1,var2andvar3wereinitializedtosomevalidvalues.customType*instance2=&instance1;dataType1firstMemberInsideStruct=(dataType1)(*instance2);classCustomType{public:dataType1member1;dataType2member2;retr

c++ - 对 std::atomic::load 的结果使用 Structure dereference(->) 运算符是否安全

在尝试使用std原子指针时,我遇到了以下问题。假设我这样做:std::atomicmyString;////AcanIdothis?myString.load()->size()//BcanIdothis?charmyFifthChar=*(myString.load()->c_str()+5);//CcanIdothis?charmyCharArray[255];strcpy(myCharArray,myString.load()->c_str());我很确定C是非法的,因为myString可能同时被删除。但是我不确定A和B。我认为它们是非法的,因为在执行读取操作时指针可能会被引用。

c++ - 为什么这个 C++ 代码没有给出编译错误?

#includeusingnamespacestd;structa{inte;structabc*d;};structabc{intc;};intmain(){return0;}我在定义structa之后定义了structabc,其中我为abc声明了一个结构指针。这应该会引发编译错误,因为abc在其声明之前使用。但是,它没有,为什么?而当我用structabcd而不是structabc*d替换它时,它会按预期给出编译错误。 最佳答案 这个声明structabc*d;一方面声明structabc,另一方面声明structabc*类型的

c++ - 为什么我不能在 C++ 中映射结构?

我已经声明了这样的结构->structdata{intx,y;booloperator现在我想映射它作为一个键和一个bool值。intmain(){dataa;mapmp;a.x=12,a.y=24;mp[a]=true;}最后一行给我这个错误->error:passing'const'as'this'argumentof'booldata::operator我该如何解决这个问题?? 最佳答案 std::map在内部将它们存储为std::map.这里重要的是Key是const.因此,在您的示例中,data是const,但是opera

c++ - 在新结构中声明的数组的地址

在这样的定义中typedefstruct{myTypearray[N];}myStruct;myStructobj;我总是可以假设([edit]假设会发生正确的转换,这不是这里问题的重点[/edit])(&obj==&obj.array[0])将返回TRUE,或者我是否应该担心编译器引入额外的填充以适应myType对齐要求?理论上这不应该发生,因为该结构只有一个字段,但我对此并不完全确定。 最佳答案 通过适当的转换,这将始终返回true。来自Cstandard的第6.7.2.1节:13.Withinastructureobject,

C++ 结构和构造函数

一个关于C++结构的快速问题,我还没有找到答案:我读到结构和类之间的唯一区别是成员可见性。那么,编译器是否为该结构提供了默认构造函数?(以及默认的复制构造函数、析构函数和赋值运算符?)您可以自己定义以上所有内容吗?谢谢,伊斯特万 最佳答案 是的,是的,是的,你可以。 关于C++结构和构造函数,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6412587/

c++ - 访问类中的结构成员

我有一个.hpp和.cpp文件。我想访问一个类中结构中的变量,该变量恰好位于.cpp文件中的header.hpp文件中。在.hpp中,我有classfoo{public:structpacket{intx;u_inty;};};foo(constchar*name):m_name(name){}在.cpp中我做了:foo*foo_1=&foo;printf("Thevalueofxis:%d",foo_1->packet.x);printf("Thevalueofyis:%u",foo_1->packet.y);执行此操作时,我收到以下错误:code_1.cpp:117:error:e