草庐IT

new_list

全部标签

c++ - std::list 固定大小

如何创建具有固定元素计数的std::list? 最佳答案 如果您只想要一个固定大小的容器,也许您正在寻找std::tr1::array.(或者对于C++0x只是std::array。)如果您不插入或删除元素,我认为使用std::list没有任何优势。而不是std::array或std::vector. 关于c++-std::list固定大小,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi

c++ - malloc/new 是否从缓存或 RAM 返回内存块?

我想知道malloc/new是否从缓存或RAM返回内存块。提前致谢。 最佳答案 当作为操作系统中的进程生活时,您对所有这些都是抽象的,您只获得内存。您不必为此担心,操作系统会为您管理所有这些,而内存单元会将事物从一个转移到另一个。但是您仍然看到一个单一的虚拟内存布局。 关于c++-malloc/new是否从缓存或RAM返回内存块?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1

c++ - 使用常量长度时 char[] 和 new char[] 之间的区别

所以这似乎是一个得到广泛回答的问题,但我更感兴趣的是两者之间到底发生了什么不同的内部结构。除了第二个示例不仅创建了内存,还创建了指向内存的指针这一事实,当发生以下情况时内存会发生什么:chara[5];charb*=newchar[5];与为什么我问这个问题更直接相关,我怎么能做constintlen=5;char*c=newchar[len];但不是constintlen=5;chard[len];//CompilererrorEDIT应该提到我在VC++上遇到了这个编译器错误(去计算...)1>.\input.cpp(138):errorC2057:expectedconstant

c++ - 为什么不在 placement new 中隐式调用析构函数”?

如本网站所引用...http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.10但是我没有找到原因,为什么我们要显式调用析构函数? 最佳答案 您可以将其视为对delete的调用,但由于您使用了placementnew,因此您不想使用delete,因为那样会尝试释放内存。如果你想让它自动调用,你可以使用RAII://Coulduseatemplatedversion,orfindanexistingimplsomewhere:voiddestroy_fred(Fred*f){f-

list::sort 的 C++ 自定义比较函数

您好,我在编译一段简单的代码时遇到了问题。我正在创建一个实现一副纸牌的类,我想使用list::short方法创建一个洗牌方法。相关代码:deck.h#ifndef_DECK_H#define_DECK_H#include#include#include"Card.h"#include"RandomGenerator.h"usingnamespacestd;classDeck{private:staticconstintCARD_NUMBER=Card::CARDS_PER_SUIT*Card::SUIT_NUMBER;list*cards;RandomGeneratorrg;publi

c++ - std::list、std::vector 方法和 malloc()

在中断处理程序下使用STL:list和STL::vector类型我想避免调用malloc()。问题:防止在STL列表和vector中调用malloc()的最佳方法是什么?创建具有预定义大小的结构然后避免push/pop/erase调用就足够了吗?提前致谢 最佳答案 std::list和std::vector等STL容器具有接受Allocator类型的构造函数。通过提供您自己的分配器而不是使用默认分配器,您可以控制容器分配内存的方式。这个选项很少使用,但是在实时环境中使用你自己的分配器是一个很好的例子,说明了这个特性在哪里有用(并证明

c++ - new操作分配的内存是连续的吗?

如题所示,我想知道在c++中,一个new操作分配的内存是否连续... 最佳答案 BYTE*data=newBYTE[size];在此代码中,无论给定大小,返回的内存区域都是连续。如果堆管理器不能分配size的连续内存,则失败。将返回异常(或malloc中的NULL)。程序员总是会在进程的地址空间中看到连续(是的,无限:-)内存的错觉。这就是虚拟内存为程序员提供的。请注意,程序员(少数嵌入式系统除外)总是看到虚拟内存。然而,几乎连续的内存可以以任意方式映射到物理内存中(以“页面”大小为粒度,通常为4KB)。该映射您看不到,而且大多数情

c++ - 使用 C++11 Lambda 函数更改 vector(list, deque...) 中的所有元素

我有以下代码:#include#include#includeintmain(intargc,char*argv[]){std::vectorobj;obj.push_back(10);obj.push_back(20);obj.push_back(30);std::for_each(obj.begin(),obj.end(),[](intx){returnx+2;});for(int&v:obj)std::cout结果是:10、20、30我想使用新C++11标准的Lambda函数更改vector(obj)中的所有元素。这是for_each函数的实现代码:templateFunctio

c++ - 在 initializer_list 中使用临时变量会导致访问错误

这个问题在这里已经有了答案:Doubledeleteininitializer_listvs2013(1个回答)关闭8年前。我正在尝试使用initializer_list来实例化一个类,但出现了连线错误。当尝试使用以下方法创建`ClassB``变量时:ClassBb={{1,{}},{2,{}};将发生内存访问冲突。但是,如果更改为:ClassAa0,a1;ClassBb={{1,a0},{2,a1}};错误消失。我尝试使用VC2013(没有更新1)和gcc-c++4.8.1进行编译。使用gcc-c++4.8.1不会产生任何运行时错误。是VC的bug吗?谁能帮忙确认一下?谢谢!以下是S

c++ - 在键上使用 gpg --list-packets 的输出来获取 mpi 值以生成 s 表达式

我正在尝试使用gpg生成的公钥使用libgcrypt进行加密。我在key上使用了listpackets命令来获取key的内容,并将mpi值解析为一个s表达式。因此,当我尝试使用我的公钥对我的sessionkey进行编码时,我收到错误消息“S表达式中的奇数十六进制数”?我认为列表数据包可能会给我没有前导零的十六进制数字?如果是这样,我需要做什么才能获得可以在libgcrypt中使用的mpi值? 最佳答案 经过gpg和libgcrypt邮件列表的反复试验和建议后,listpackets命令会截断mpi值中的前导零,因此您必须在mpi值前