草庐IT

STL容器之queue

全部标签

没有 <string> 和 STL 的 C++ 字符串

我过去用C++的次数不多,最近一直在用C#,我真的很难再次回到C++的基础知识中。这是特别棘手的,因为工作要求不能使用最方便的C++结构,因此所有字符串都必须是char*,并且没有提供STL列表。我目前正在尝试做的是创建一个字符串列表,使用STL或在C#中我根本不会花时间。基本上我想要一个功能,例如:char**registeredNames=newchar*[numberOfNames];然后,RegisterName(const*charconstname,constintlength){//looptoseeifnamealreadyregisteredsnippedif(not

c++ - 仅对 STL 容器使用 C++ 是一种不好的做法吗?

首先介绍一下背景......在下文中,我使用C、C++和Java编写(通用)算法,而不是带有界面的gui和花哨的程序,而是简单的命令行算法和库。我开始学习Java编程。我对Java非常满意,并且我学会了如何使用Java容器,因为它们往往会降低簿记的复杂性,同时保证出色的性能。我断断续续地用过C++,但我用它肯定不如用Java,而且感觉很麻烦。我对C++的了解还不足以在不查找每个函数的情况下使用它,所以我很快又回到了尽可能多地坚持使用Java。然后我突然转向汇编语言的破解和黑客攻击,因为我觉得我过于关注一种太高级的语言,我需要更多关于CPU如何与内存交互以及真正发生的事情的经验与1和0。

c++ - 有什么用STL写的很酷的项目吗?

我想学STL通过快速浏览真实项目源。在哪里可以找到使用STL的高质量项目? 最佳答案 Notepad++:仅限纯Win32+STL!BasedonapowerfuleditingcomponentScintilla,Notepad++iswritteninC++andusespureWin32APIandSTLwhichensuresahigherexecutionspeedandsmallerprogramsize.Byoptimizingasmanyroutinesaspossiblewithoutlosinguserfrien

c++ - 将项目推送到 STL 容器后出现段错误

typedefstructtemp{inta,b;char*c;temp(){c=(char*)malloc(10);};~temp(){free(c);};}temp;intmain(){tempa;listl1;l1.push_back(a);l1.clear();return0;}给出段错误。 最佳答案 你没有复制构造函数。当您将“a”插入列表时,它会被复制。因为你没有复制构造函数(为c分配内存并从旧c复制到新c)c是a中的相同指针和列表中a的拷贝。两个a的析构函数都被调用,第一个会成功,第二个会失败,因为c指向的内存已经被释

c++ - 为什么宏 __STL_FUNCTION_TMPL_PARTIAL_ORDER 应该将模板函数包含在 std_pair.h 中

今天在STL_pair.h中看到如下代码:#ifdef__STL_FUNCTION_TMPL_PARTIAL_ORDERtemplateinlinebooloperator!=(constpair&__x,constpair&__y){return!(__x==__y);}templateinlinebooloperator>(constpair&__x,constpair&__y){return__y我不认为模板函数与偏特化有任何关联的功能模板。我错了吗? 最佳答案 编译器如何处理函数调用在C++中调用函数模板经历了名称查找(标准

c++ - 同时迭代两个或多个容器的最佳方法是什么

C++11提供了多种迭代容器的方法。例如:基于范围的循环for(autoc:container)fun(c)std::for_eachfor_each(container.begin(),container.end(),fun)然而,迭代两个(或更多)相同大小的容器以完成如下操作的推荐方法是什么:for(unsignedi=0;i 最佳答案 晚会晚了。但是:我会遍历索引。但不是使用经典的for循环,而是使用基于范围的for循环遍历索引:for(unsignedi:indices(containerA)){containerA[i]=

c++ - 有效地将(Qt)对象容器转换为const对象容器?

我的具体问题是我有一个QMultiHashprivate成员,我想提供对散列值的访问权限,但要访问const项目的版本,声明:QListgetBars(Foof)const;有没有比丑陋/低效地创建带有const项目和复制的新容器更清洁/更有效的方式来“压缩”Qt容器内的项目来自源的指针(在本例中为QMultiHash::values())?恐怕答案可能是“否”,但我想确保我没有遗漏一些Qt/C++(03)语法魔法来做到这一点。 最佳答案 有两种方法。您提到的明显方法是使用C++11并将其自己转换为QList.QListgetLis

c++ - 容器的常量正确性

经过多年的盲目接受std::vector::operator[]const返回const_reference,但是,鉴于const如何用于智能指针,我现在开始怀疑为什么它和其他STL容器是这样设计的。似乎conststd::vector的“常量”被应用于vector及其元素,而对于智能指针,“常量”仅适用于指针而不适用于它指向的元素。澄清一下,似乎应该有一个类似vector的容器,其中const只是意味着用户无法更改容器的大小,但容器中的元素是可变的。我的主要问题是:是否有什么东西可以阻止这种类型的容器“constcorrect”?似乎有一些通过添加额外的间接层(例如std::vect

c++ - 容器的无序迭代

我的意图是隐藏容器的实现细节,这样客户端就不能依赖隐式插入顺序。我试图通过以某种方式改变迭代发生的顺序来强制执行此操作。我有一个容器,我想在迭代时随机排序。这是一些伪代码。namespaceabc{templateclassRandomList{voidinsert(Tt);Terase(Tt);iteratorbegin();iteratorend();}}namespacetest{intmain(){RandomListlist;list.insert(1);list.insert(2);list.insert(3);for(typenameRandomList::iterato

c++ - 序列化结构的 STL 映射

我正在尝试序列化一个STL映射,其中键和值是结构。当键是一个结构并且值是一个int时,附加的代码工作正常。但是,我在设置序列化函数来处理结构值时遇到问题。有关如何执行此操作的任何建议?非常感谢-安德鲁。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusingnamespacestd;structportfolio_data{doublea;};st