- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一名学生,我的操作系统类(class)项目有一点问题,这对于作业规范本身来说有点多余:
虽然我可以将 100 万个双端队列推送到我的双端队列中,但我无法推送约 1000 万或更多。
现在,在实际的程序中,有很多事情在进行,并且已经在 Stack Overflow 上提出的唯一与哪怕是最轻微的相关性相关的问题也恰恰如此,只有轻微的相关性。 https://stackoverflow.com/a/11308962/3407808
由于该答案的重点是“其他函数破坏堆”,我将代码隔离到一个新项目中并单独运行,发现一切都以完全相同的方式失败。
这里是代码本身,为了空间的缘故进行了精简和重命名。
#include <iostream>
#include <string>
#include <sstream>
#include <deque>
using namespace std;
class cat
{
cat();
};
bool number_range(int lower, int upper, double value)
{
while(true)
{
if(value >= lower && value <= upper)
{
return true;
}
else
{
cin.clear();
cerr << "Value not between " << lower << " and " << upper << ".\n";
return false;
}
}
}
double get_double(char *message, int lower, int upper)
{
double out;
string in;
while(true) {
cout << message << " ";
getline(cin,in);
stringstream ss(in); //convert input to stream for conversion to double
if(ss >> out && !(ss >> in))
{
if (number_range(lower, upper, out))
{
return out;
}
}
//(ss >> out) checks for valid conversion to double
//!(ss >> in) checks for unconverted input and rejects it
cin.clear();
cerr << "Value not between " << lower << " and " << upper << ".\n";
}
}
int main()
{
int dq_amount = 0;
deque<deque <cat> > dq_array;
deque<cat> dq;
do {
dq_amount = get_double("INPUT # OF DEQUES: ", 0, 99999999);
for (int i = 0; i < number_of_printers; i++)
{
dq_array.push_back(dq);
}
} while (!number_range(0, 99999999, dq_amount));
}
以防有点混淆,设计(以防与错误有关)是我的程序要求您输入一个整数值。它接受您的输入并验证它是否可以作为整数读取,然后进一步解析它以确保它在特定的数字范围内。一旦在边界内找到它,我将 myClass 的双端队列插入 myClass 的双端队列,次数等于用户输入的次数。
这段代码在我制作这个项目的过去几周一直有效,但我的上限一直是 9999,我决定将它与我程序中的大多数其他输入标准化,这是一个相当大 99,999,999。尝试使用 9999 作为用户输入运行此代码工作正常,即使使用 99999999 作为上限。该问题是如果用户输入为 9999999+ 时发生的运行时错误。
为什么这不起作用有什么特别明确的原因吗?
哦,对了,来自 Code::Blocks 13.12 的错误消息本身:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
This application has requested the Runtime to terminate it in an unusual way.Please contact the application's supprt team for more information.
Process returned 3 (0x3) execution time : 12.559 sPress any key to continue.
我有屏幕截图,但我需要达到 10+ 声望才能将图像放入我的问题中。
最佳答案
这看起来像是地址空间耗尽。
如果您正在为 32 位目标进行编译,通常每个进程的用户模式可访问地址空间将被限制为 2 GiB,或者在某些平台上可能为 3 GiB。 (其余部分保留用于进程间共享的内核模式映射)
如果您在 64 位平台上运行并构建 64 位二进制文件,您应该能够执行更多的 new
/alloc()
调用,但请注意,您可能会开始点击交换。
或者,即使您正在构建 64 位二进制文件,您也可能会达到资源配额。在 Linux 上,您可以检查 ulimit -d
以查看您是否有每个进程的内存限制。
关于c++ - 不能 deque.push_back() 1000 万+ deques,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23644580/
这个问题在这里已经有了答案: Is using std::deque or std::priority_queue thread-safe? [duplicate] (3 个答案) Thread s
我是一名学生,我的操作系统类(class)项目有一点问题,这对于作业规范本身来说有点多余: 虽然我可以将 100 万个双端队列推送到我的双端队列中,但我无法推送约 1000 万或更多。 现在,在实际的
std::deque 在 CppReference 中有很好的记录,但是 boost::deque 的 documentation看起来和标准的一样,只是增加了一些方法,比如nth和index_of。
Scala 是否具有类似于 Java Deque 或 Python deque 的双面队列? 我在 Scala 2.12 API 中只看到 Stack 和 Queue 但只想仔细检查一下。 最佳答案
好的,我正在实现一个与 Apple 的日历应用程序非常相似的日历。我的 UICollectionView 中有多种类型的单元格。我有垂直线单元格、水平线单元格、现在线单元格和事件单元格。 每当我滚动时
目前在我的项目中我有两个静态方法PushObjects 和ProcessObject。 PushObject 方法将数据推回静态双端队列,此方法可由多个线程访问,但 ProcessObject 始终由
使用 http://www.cppreference.com/wiki/stl/deque/insert作为引用,我在某些位置将值插入双端队列。 例如,如果双端队列 A 是: a, b, d, e,
Python 的 collections.deque有一个 maxlen 参数,这样 [...] the deque is bounded to the specified maximum lengt
这是我的第一个问题,希望大家都好。我必须编写双端队列或双端队列的数组实现,但在理解前面方法的入队元素时遇到了一些麻烦,我通过摆弄了一下让它工作,但我仍然很难理解逻辑: void addAtFront(
我试图解决 Java Deque 上的 HackerRank 问题。除了具有 100,000 个输入的案例之外,我的代码通过了所有案例。 问题:在这个问题中,给你 N 个整数。您需要在大小为 M 的所
我正在编写 Deque 以便能够从 Front 和 Rear 中添加和删除....我认为我的逻辑是错误的,但我无法弄清楚!因为当我从前面插入时,它必须从后面移除,但也从前面移除。 你会检查我的代码并帮
我在使用 deque 容器时有些困惑。 我将 vector 与 deque 进行了比较,我动态地输入了 Integer 值并观察到在几次插入之后 vector 的对象开始四处移动并且地址已被更改,这似
由于我对内存有严格的要求,因此在从双端队列的开头删除一个范围后,我尝试使用deque::shrink_to_fit。但是,它不起作用,我只看到libstdc++使用带有副本的swap技巧实现了shri
我需要为继承到 deque 的类添加功能,但更喜欢看到 collections.deque 中的代码来实现一个新类 final。 >>> from _collections import deque,
本文实例讲述了python3 deque 双向队列创建与使用方法。分享给大家供大家参考,具体如下: 创建双向队列 ?
考虑以下 C++ 程序: #include #include using namespace std; int main() { deque d(30000000); cout
尝试使用 Deque 数据结构来回答一个编程问题,以查找乘积小于目标的所有子数组。 如上所述,我想使用 Deque 数据结构。我查看了用法,认为我做对了,但是使用了 const Deque = req
双端队列实现我实现了一个通用的 Deque 数据结构。 请检查此实现 这个错误对我来说没有意义,请告诉我一点信息 import java.util.NoSuchElementException; im
我需要编写自己的 Deque 类,并且必须使用双向链表实现来存储数据。问题是编写方法pushfromLeft(Thing thing),它将插入到双端队列的左侧。以下是我迄今为止所拥有的,但似乎不起作
标准说: A deque is a sequence container that supports random access iterators (27.2.7). In addition, it
我是一名优秀的程序员,十分优秀!