问题标签 [contiguous]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2055 浏览

sql - 标记不连续的日期范围

背景(输入)

全球历史气候学网络在其收集的天气测量数据中标记了无效或错误的数据。删除这些元素后,有大量数据不再具有连续的日期部分。数据类似于:

问题(输出)

尽管可以推断缺失数据(例如,通过其他年份的平均值)以提供连续范围,但为了简化系统,我想根据是否有连续的日期范围来填充月份来标记非连续段:

一些测量是在 1843 年进行的。

问题

对于所有气象站,您将如何标记月份中缺少一天或多天的所有天数?

源代码

选择数据的代码类似于:

相关想法

生成一个包含连续日期的表格,并将它们与测量的数据日期进行比较。

更新

可以使用本节中的 SQL 重新创建该问题。

桌子

创建表如下:

生成数据

以下 SQL 将数据插入到表中(id[int]、name [varchar]、date [date]、valid[boolean]):

'A'通过值'F'表示在特定日期进行测量的气象站的名称。

删除随机行

删除一些行如下:

尝试#1

以下不会将valid标志切换到false一个月中缺少一天或多天的所有天:

尝试#2

以下 SQL 生成一个空结果集:

尝试#3

以下 SQL 生成站名和日期的所有可能组合:

然而,在实际数据中,有数百个站点,并且日期可以追溯到 1800 年代中期,因此所有站点的所有日期的笛卡尔坐标都太大。如果有足够的时间,这种方法可能会奏效……必须有更快的方法。

尝试#4

PostgreSQL 有窗口函数。

如何使用 postgres 中的窗口函数选择特定更改

谢谢!

0 投票
2 回答
2091 浏览

recursion - 识别二维数组中的连续重复 [C]

我有一个看起来像这样的二维数组:

我试图找出一种方法来识别最长的连续链 1 跨越或向下。在这种情况下,它从第 4 列第 2 行开始,长度为 4,向下。

我正在考虑使用递归,但在跟踪位置时遇到了一些问题,尤其是在遇到 0 时。

到目前为止,我有一些类似的东西(仅用于检查):

其中G[][]是包含 1 和 0 的二维数组,n是行/列数,i是行号,j是列号。

感谢您提前提供任何帮助!

0 投票
4 回答
1137 浏览

c++ - 如何以及何时分配全局或静态数组的内存?

在 c++ 中定义全局或静态数组时,它的内存不会在程序开始时立即保留,而只会在我们写入数组时保留。我发现令人惊讶的是,如果我们只写入数组的一小部分,它仍然不会保留整个内存。考虑下面这个稀疏写入全局数组的小例子:

现在针对不同的步长执行此操作并查看 top 的输出,例如:

RES 列表示内存只保留在小块中,这也意味着阵列在物理内存中不太可能是连续的。有人对较低层次的事物有更多的了解吗?

这也有负面影响,我可以轻松运行许多程序,其中所有 VIRT 的总和超过物理内存,只要 RES 的总和低于。但是,一旦它们都写入全局数组,系统就会耗尽物理内存,并且程序会被发送 sigkill 或其他东西。

理想情况下,我想告诉编译器在开始时保留全局和静态变量的内存。可能的?

编辑

@Magnus:这些行实际上是正确的顺序。:) 以第一行为例,./a.out 1000000意味着我在数组中每 100 万个条目写入一次,因此总共只有 250 个。这对应于只有 1868k 的 RES。在最后一个示例中./a.out 100,每写入数百个条目,然后总内存也被物理分配 RES=VIRT=1.9g。从这些数字看来,每当一个条目被写入数组时,物理内存上都会保留一个完整的 4k 块。

@Nawaz:该数组在虚拟地址空间中是连续的,但据我了解,操作系统可能很懒惰,仅在实际需要时才保留物理内存。由于这是在小块中完成的,而不是一次完成整个数组,如何保证它在物理内存中是连续的?

@Nemo:谢谢你,事实上,当调用多个实例时,a.out它们在开始时暂停,然后写入我收到oom-killer消息的数组/var/log/messages,确实你的sysctrl命令阻止我首先启动太多a.out实例。谢谢!

最后两行略显忧虑。:)

@doron:谢谢,很好的解释,抱歉不能投票/选择。

0 投票
6 回答
8086 浏览

c++ - std::vector 和多维数组的连续内存

我知道该标准并不强制std::vector分配连续的内存块,但所有实现都遵循这一点。

假设我希望创建一个多维静态数组的向量。为简单起见考虑二维,以及长度为 N 的向量。也就是说,我希望创建一个具有 N 个元素的向量,例如int[5]

我可以确定所有 N*5 整数现在在内存中都是连续的吗?这样我原则上可以通过知道第一个元素的地址来访问所有整数?这个实现是否依赖?

作为参考,我目前在连续内存块中创建 2D 数组的方式是首先制作一个长度为 N 的 float* (动态)数组,将所有 N*5 个浮点数分配到一个数组中,然后将每 5 个元素的地址复制到的第一个数组float*

0 投票
2 回答
9070 浏览

c++ - std::array 中的内存是否连续?

内存是std::array连续的吗?以下是有效/良好的做法吗?

然后我可以传递ptr给期望 c 样式数组的函数吗?

0 投票
1 回答
292 浏览

c - 如何为一个字符数组分配 8kb 内存并获取它的起始地址和结束地址?

我需要为一个数组分配 8 kb 并且需要获取数组的起始地址和结束地址。然后我需要检查那些虚拟内存地址在实际物理内存中是否连续对齐。怎么做。请帮忙。提前致谢。

0 投票
3 回答
2218 浏览

c++ - C++ 向量总是连续的吗?

可能重复:
std::vector 元素是否保证是连续的?

我遇到了一种技术,人们在 C++ 中使用向量来接收或发送 MPI 操作的数据,因为据说它可以将元素连续存储在内存中。

但是,我仍然怀疑这种方法对于任何大小的向量是否仍然有效,尤其是当向量增长到一定大小时,这种假设可能会失效。

下面是我所说的一个例子:

0 投票
2 回答
914 浏览

java - Java:多维数组中的连续区域,用于实现拉丁方

我正在编写一个程序,它读取一个潜在的拉丁方格并判断它是否是一个有效的拉丁方格。现在我正在尝试判断所选区域是否是连续的。

同时读取潜在的拉丁广场和该区域的位置。该区域[0,1][0,2][1,1][1,2]将是有效区域,因为它是连续的; [0,0][0,2][1,1][1,2]不会是连续的或有效的,因为[0,0]无法到达。我如何判断它们是否连续?

0 投票
2 回答
978 浏览

c++ - CRT 内存分配

我们的应用程序分配几何坐标的大 std::vector<> -
它必须是一个向量(这意味着连续),因为它最终发送到 OpenGL 以绘制模型。
Open GL 可以处理连续数据。
在某些时候分配失败,这意味着保留内存会引发 std::bad_alloc 异常。但是,此时仍有大量内存可用。
问题是无法分配连续块。
所以第一个两个问题是:

  • 有没有办法控制 CRT 分配内存的方式?或者一种对其进行碎片整理的方法(疯狂的想法))..

  • 也许有一种方法可以检查运行时是否可以分配一定大小的内存块(不使用 try/catch)。

上述问题通过将这个大向量分割成几个向量并为每个向量调用一次 OpenGL 得到了部分解决。
然而,如何定义每个较小向量的大小仍然存在一个问题——如果有很多大小相当小的向量,我们几乎可以肯定适合内存,但会有很多对 OpenGL 的调用,这会减慢可视化速度。

0 投票
4 回答
271 浏览

ruby - How can I sort an array of dates so it is non-contiguous?

If I start with a contiguous sequence of dates:

How can I sort this array so that all dates, in sequence, are at least 1 day apart?

I realise that this would of course not be possible for an array of 2 contiguous dates.