问题标签 [vector]

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 投票
11 回答
416570 浏览

r - 如何访问向量中的最后一个值?

假设我有一个向量嵌套在一个或两个级别的数据框中。是否有一种快速而肮脏的方式来访问最后一个值,而不使用该length()函数?有什么 ala PERL 的$#特殊变量?

所以我想要类似的东西:

代替

0 投票
2 回答
6897 浏览

.net - 在 C++/CLI 中将 std::vector<>::iterator 转换为 .NET 接口

我正在包装一个本机 C++ 类,它具有以下方法:

1) 表示这种接口的“.NET 方式”是什么?返回数组<>的单个方法?array<> 泛型是否有迭代器,以便我可以实现 BeginLocals() 和 EndLocals()?

2) Local 是否应该在 .NET 包装器中声明为值结构?

我真的很想用 .NET 风格来表示包装类,但我对托管世界很陌生——这种类型的信息让谷歌感到沮丧......

0 投票
9 回答
2278 浏览

c++ - 帮助合并向量的算法

我需要一个非常快速的算法来完成以下任务。我已经实现了几种完成它的算法,但是它们对于我需要的性能来说都太慢了。它应该足够快,以至于算法可以在现代 CPU 上每秒至少运行 100,000 次。它将在 C++ 中实现。

我正在使用跨度/范围,这是一种在一条线上具有起点和终点坐标的结构。

我有两个跨度向量(动态数组),我需要合并它们。一个向量是 src,另一个是 dst。向量按跨度起始坐标排序,跨度在一个向量内不重叠。

src 向量中的 span 必须与 dst 向量中的 span 合并,这样得到的向量仍然是排序的并且没有重叠。IE。如果在合并期间检测到重叠,则将两个跨度合并为一个。(合并两个跨度只是改变结构中的坐标的问题。)

现在,还有一个问题,src 向量中的跨度必须在合并期间“加宽”。这意味着将在 src 中每个跨度的开始坐标添加一个常量,并将另一个(更大的)常量添加到结束坐标。这意味着在 src 跨度扩大后,它们可能会重叠。


到目前为止,我得出的结论是它不能完全就地完成,需要某种临时存储。我认为它应该在线性时间超过 src 和 dst 总和的元素数量。

任何临时存储都可能在算法的多次运行之间共享。

我尝试过的两种太慢的主要方法是:

  1. 将 src 的所有元素附加到 dst,在附加之前扩展每个元素。然后运行就地排序。最后,使用“读”和“写”指针遍历结果向量,读指针在写指针之前运行,在进行时合并跨度。当所有元素都被合并(读指针到达末尾) dst 被截断。

  2. 创建一个临时工作向量。通过重复从 src 或 dst 中选择下一个元素并合并到工作向量中来进行如上所述的简单合并。完成后,将工作向量复制到 dst 并替换它。

第一种方法的问题是排序是 O((m+n)*log(m+n)) 而不是 O(m+n) 并且有一些开销。这也意味着 dst 向量必须增长得比它真正需要的大得多。

第二个主要问题是大量复制并再次分配/释放内存。

如果您认为需要,可以更改用于存储/管理跨度/向量的数据结构。

更新:忘了说数据集有多大。最常见的情况是任一向量中有 4 到 30 个元素,并且 dst 为空或 src 和 dst 中的跨度之间存在大量重叠。

0 投票
16 回答
29981 浏览

c++ - STL vectors with uninitialized storage?

I'm writing an inner loop that needs to place structs in contiguous storage. I don't know how many of these structs there will be ahead of time. My problem is that STL's vector initializes its values to 0, so no matter what I do, I incur the cost of the initialization plus the cost of setting the struct's members to their values.

Is there any way to prevent the initialization, or is there an STL-like container out there with resizeable contiguous storage and uninitialized elements?

(I'm certain that this part of the code needs to be optimized, and I'm certain that the initialization is a significant cost.)

Also, see my comments below for a clarification about when the initialization occurs.

SOME CODE:

0 投票
9 回答
8630 浏览

c++ - 获取向量进入一个需要向量的函数

考虑这些类。

这个函数

最后是我的矢量图

我想传递derived给 function BaseFoo,但编译器不让我。我如何解决这个问题,而不将整个向量复制到 a std::vector<Base*>

0 投票
7 回答
4755 浏览

c++ - 使用迭代器获取向量的索引

当迭代向量的元素时,最好使用迭代器而不是索引(请参阅为什么使用迭代器而不是数组索引?)。

但是,可能需要在循环体中使用索引。在这种情况下,考虑到性能和灵活性/可扩展性,以下哪一项更可取?

  1. 恢复到索引循环/li>
  2. 计算偏移量/li>
  3. 使用 std::distance/li>
0 投票
3 回答
417 浏览

arrays - 类中的向量问题

我在一个类中有这个代码:

所以它会出现这个错误:数组下标的无效类型`int [int]'

有什么问题?我不明白。谢谢。

0 投票
3 回答
818 浏览

c++ - 函数返回另一个函数的返回值

如果我想调用Bar()而不是Foo(),是否会Bar()返回 Foo() 返回的副本(额外开销),还是返回Foo()放置在临时堆栈上的相同对象?

0 投票
5 回答
11803 浏览

opengl - 将 Z 轴与矢量对齐的最简单方法是什么?

给定一个点,例如 (0, 0, 0) 和一个向量,例如 (x, y, z)。对齐以 (0, 0, 0) 为中心的负 Z 轴以指向该向量的方向的最简单方法是什么?欢迎使用 OpenGL 的示例,但不是必需的。

0 投票
7 回答
16757 浏览

c - 对基于 c 的小型向量和矩阵库的建议

我需要一个用于 2d 和 3d 向量以及 3x3 和 4x4 矩阵的轻量级库。在基本的 C 中。这样我就不会以次优的方式重新发明轮子。

有什么建议么?