草庐IT

stl-algorithm

全部标签

c# - STL C++ 和 C# 容器之间的映射

这个问题在这里已经有了答案:ComparisonofC++STLcollectionsandC#collections?(1个回答)关闭2年前。有人能指出常用的C++STL容器(如vector、list、map、set、multimap...)和C#通用容器之间的良好映射吗?我已经习惯了前者,并且不知何故我已经习惯于用这些容器来表达算法。我很难找到与这些等效的C#。谢谢! 最佳答案 这是一个粗略的等价:Dictionaryunordered_mapHashSetunordered_setListvectorLinkedListlis

c# - STL C++ 和 C# 容器之间的映射

这个问题在这里已经有了答案:ComparisonofC++STLcollectionsandC#collections?(1个回答)关闭2年前。有人能指出常用的C++STL容器(如vector、list、map、set、multimap...)和C#通用容器之间的良好映射吗?我已经习惯了前者,并且不知何故我已经习惯于用这些容器来表达算法。我很难找到与这些等效的C#。谢谢! 最佳答案 这是一个粗略的等价:Dictionaryunordered_mapHashSetunordered_setListvectorLinkedListlis

C++:const 类成员的 STL 问题

这是一个开放式问题。有效的C++。第3项。尽可能使用const。真的吗?我想做任何在对象生命周期内不会改变的东西。但是const也有它自己的麻烦。如果一个类有任何const成员,编译器生成的赋值运算符将被禁用。如果没有赋值运算符,一个类将无法使用STL。如果您想提供自己的赋值运算符,则需要const_cast。这意味着更多的忙碌和更多的错误空间。您多久使用一次const类成员?编辑:作为一项规则,我争取const的正确性,因为我做了很多多线程。我很少需要为我的类实现复制控制,也从不删除代码(除非绝对必要)。我觉得const的当前状态与我的编码风格相矛盾。const迫使我实现赋值运算符,

C++:const 类成员的 STL 问题

这是一个开放式问题。有效的C++。第3项。尽可能使用const。真的吗?我想做任何在对象生命周期内不会改变的东西。但是const也有它自己的麻烦。如果一个类有任何const成员,编译器生成的赋值运算符将被禁用。如果没有赋值运算符,一个类将无法使用STL。如果您想提供自己的赋值运算符,则需要const_cast。这意味着更多的忙碌和更多的错误空间。您多久使用一次const类成员?编辑:作为一项规则,我争取const的正确性,因为我做了很多多线程。我很少需要为我的类实现复制控制,也从不删除代码(除非绝对必要)。我觉得const的当前状态与我的编码风格相矛盾。const迫使我实现赋值运算符,

c++ - 哪个 STL 容器最适合 std::sort? (这还重要吗?)

标题不言自明....容器的选择是否会以某种方式影响默认std::sort算法的速度?比如我用list,排序算法是切换节点指针还是切换节点中的全部数据? 最佳答案 选择确实会产生影响,但预测哪个容器最有效是非常困难的。最好的方法是使用对您的应用程序来说最容易使用的容器(可能是std::vector),看看该容器的排序是否足够快,如果是的话,坚持使用它。如果没有,请对您的排序问题进行性能分析,并根据配置文件数据选择不同的容器。作为一名前讲师和前培训师,我个人有时会为链表具有神秘的性能增强属性这一普遍观点负责。从一个知道的人那里知道:链表

c++ - 哪个 STL 容器最适合 std::sort? (这还重要吗?)

标题不言自明....容器的选择是否会以某种方式影响默认std::sort算法的速度?比如我用list,排序算法是切换节点指针还是切换节点中的全部数据? 最佳答案 选择确实会产生影响,但预测哪个容器最有效是非常困难的。最好的方法是使用对您的应用程序来说最容易使用的容器(可能是std::vector),看看该容器的排序是否足够快,如果是的话,坚持使用它。如果没有,请对您的排序问题进行性能分析,并根据配置文件数据选择不同的容器。作为一名前讲师和前培训师,我个人有时会为链表具有神秘的性能增强属性这一普遍观点负责。从一个知道的人那里知道:链表

c++ - 是否不可能将 STL 映射与结构一起用作键?

我有以下代码:structNode{inta;intb;};Nodenode;node.a=2;node.b=3;mapaa;aa[1]=1;//OK.mapbb;bb[node]=1;//Compileerror.当我尝试将结构Node的实例映射到int时,出现编译错误。为什么? 最佳答案 要使某事物可用作map中的键,您必须能够使用operator对其进行比较.您需要将这样的运算符添加到您的节点类中:structNode{inta;intb;booloperatora当然,真正的操作符做什么取决于比较对你的结构的实际意义。

c++ - 是否不可能将 STL 映射与结构一起用作键?

我有以下代码:structNode{inta;intb;};Nodenode;node.a=2;node.b=3;mapaa;aa[1]=1;//OK.mapbb;bb[node]=1;//Compileerror.当我尝试将结构Node的实例映射到int时,出现编译错误。为什么? 最佳答案 要使某事物可用作map中的键,您必须能够使用operator对其进行比较.您需要将这样的运算符添加到您的节点类中:structNode{inta;intb;booloperatora当然,真正的操作符做什么取决于比较对你的结构的实际意义。

C++ STL : list with Pointers - Iterator cannot access?

我正在为一个包含我的“对象”对象指针的STL列表而苦苦挣扎。我声明:listobjectlist;并通过以下方式插入:this->objectlist.push_back(newObject(address,value,profit));并尝试像在map和其他中一样进行迭代:list::iteratoriter;iter=this->objectlist.begin();while(iter!=this->objectlist.end()){iter->print();}其中print()是Object类的公共(public)方法;这里有什么问题?我无法通过迭代器访问列表中的对象?

C++ STL : list with Pointers - Iterator cannot access?

我正在为一个包含我的“对象”对象指针的STL列表而苦苦挣扎。我声明:listobjectlist;并通过以下方式插入:this->objectlist.push_back(newObject(address,value,profit));并尝试像在map和其他中一样进行迭代:list::iteratoriter;iter=this->objectlist.begin();while(iter!=this->objectlist.end()){iter->print();}其中print()是Object类的公共(public)方法;这里有什么问题?我无法通过迭代器访问列表中的对象?