vector 相关问题

向量是一维数组:它包含可以使用整数索引访问的组件。在某些语言中,矢量的大小可以根据需要增大或缩小,以适应在创建Vector之后添加和删除项目。使用'vector-graphics'进行图形显示。

在向量中查找前一个和下一个元素等于 0 的元素

我想遍历给定的整数向量并找到一个整数,其下一个和前一个整数的值为0。 #包括 #包括 使用命名空间 std; ...

回答 3 投票 0

DataFrame 将对象列存储为 NaNs

简单的案例效果很好 df = pd.DataFrame({"a": [1,2,3], "b": [4,5,6]}) s = pd.Series([(i*10, i*11, i*12) for i in df["a"]], dtype=object) df.loc[:, "c"] ...

回答 1 投票 0

如何通过查找向量长度来优化两个循环?

有这样的功能,如果曲线太靠近直线(其直线),则从曲线中删除一些点。但重点是坐标的数量。一条曲线大约可以有1000个坐标,一个...

回答 1 投票 0

concat std::vector 和初始化列表

在 c++11 中你可以实现这个美妙的语法: 向量数字 = {1, 2, 3}; 有没有办法将进一步的初始化列表连接到现有向量上? 数字。??? ({4,5,6}); 或者 ...

回答 3 投票 0

如何在 Rust 中声明具有不同对象类型的数组

我有一个对 API 的回调,它返回一个对象,其中一个项目作为不同类型的向量。在 Rust 中,向量只能用一种类型的元素来声明。我该怎么办呢我...

回答 2 投票 0

C#中是否有List<T>的方法,就像C++中矢量的调整大小<T>

当我在 C++ 中对向量使用 resize(int newsize) 时,这意味着该向量的大小设置为 newsize 并且索引在 [0..newsize) 范围内运行。如何在 C# 中对列表执行相同操作 当我在 C++ 中使用 resize(int newsize) 表示 vector<T> 时,这意味着该 size 的 vector 设置为 newsize 并且索引在范围 [0..newsize) 内运行。如何在 C# 中对 List<T> 执行相同操作? 更改 List<T> 属性 Capacity 仅更改 Capacity,但使 Count 保持不变,而且索引仍位于 [0..Count) 范围内。请帮帮我。 附注想象一下,我有一个 vector<T> tmp 和 tmp.size() == 5 我无法引用 tmp[9],但是当我使用 tmp.resize(10) 时,我可以引用 tmp[9]。在 C# 中,如果我有 List<T> tmp 和 tmp.Count == 5,我无法引用 tmp[9] (IndexOutOfRangeException),但即使我设置了 tmp.Capacity=10,我也无法引用 tmp[9],因为 tmp.Count 是还是 5. 我想在 C# 中找到一些调整大小的类比。 不,但您可以使用扩展方法来添加自己的方法。以下内容与 std::vector<T>::resize() 具有相同的行为,包括相同的时间复杂度。唯一的区别是,在 C++ 中,我们可以使用 void resize ( size_type sz, T c = T() ) 定义默认值,并且模板的工作方式意味着,如果我们在没有 T 的默认值(没有可访问的无参数构造函数)的情况下调用它,那就没问题了。在 C# 中我们不能这样做,因此我们必须创建一个没有约束的方法来匹配非默认使用的情况,以及另一个带有 where new() 约束来调用它的方法。 public static class ListExtra { public static void Resize<T>(this List<T> list, int sz, T c) { int cur = list.Count; if(sz < cur) list.RemoveRange(sz, cur - sz); else if(sz > cur) { if(sz > list.Capacity)//this bit is purely an optimisation, to avoid multiple automatic capacity changes. list.Capacity = sz; list.AddRange(Enumerable.Repeat(c, sz - cur)); } } public static void Resize<T>(this List<T> list, int sz) where T : new() { Resize(list, sz, new T()); } } 现在 myList.Resize(23) 或 myList.Resize(23, myDefaultValue) 之类的内容将与人们对 C++ 向量的期望相匹配。我注意到,有时在 C++ 中你会有一个指针向量,在 C# 中你会有一些引用类型的列表。因此,在 C++ T() 生成空指针(因为它是指针)的情况下,我们期望它调用无参数构造函数。因此,您可能会发现它更接近您习惯的行为,将第二种方法替换为: public static void Resize<T>(this List<T> list, int sz) { Resize(list, sz, default(T)); } 这与值类型(调用无参数构造函数)具有相同的效果,但对于引用类型,它将用空值填充。在这种情况下,我们可以将整个类重写为: public static class ListExtra { public static void Resize<T>(this List<T> list, int sz, T c = default(T)) { int cur = list.Count; if(sz < cur) list.RemoveRange(sz, cur - sz); else if(sz > cur) list.AddRange(Enumerable.Repeat(c, sz - cur)); } } 请注意,这与其说是关于 std::vector<T> 和 List<T> 之间的差异,不如说是关于 C++ 和 C# 中如何使用指针的差异。 只是为了让Jon Hanna 的答案更具可读性: public static class ListExtras { // list: List<T> to resize // size: desired new size // element: default value to insert public static void Resize<T>(this List<T> list, int size, T element = default(T)) { int count = list.Count; if (size < count) { list.RemoveRange(size, count - size); } else if (size > count) { if (size > list.Capacity) // Optimization list.Capacity = size; list.AddRange(Enumerable.Repeat(element, size - count)); } } } 抱歉。这是你需要的吗? List.TrimExcess() 这是我的解决方案。 private void listResize<T>(List<T> list, int size) { if (size > list.Count) while (size - list.Count > 0) list.Add(default<T>); else if (size < list.Count) while (list.Count - size > 0) list.RemoveAt(list.Count-1); } 当size和list.Count相同时,无需调整列表大小。 使用 default(T) 参数代替 null、""、0 或其他可空类型,来填充列表中的空项,因为我们不知道 <T> 是什么类型(参考,值、结构等)。 附注我使用 for 循环而不是 while 循环,我遇到了 问题。列表的大小并不总是我所要求的。它 更小。有什么想法吗? 检查一下: private void listResize<T>(List<T> list, int size) { if (size > list.Count) for (int i = 0; i <= size - list.Count; i++) list.Add(default(T)); else if (size < list.Count) for (int i = 0; i <= list.Count - size; i++) list.RemoveAt(list.Count-1); } 设置List<T>.Capacity就像使用std::vector<T>.reserve(..)一样。也许List<T>.AddRange(..)适合您的需求。 从.NET 8开始,不需要自定义扩展方法,您可以使用CollectionsMarshal.SetCount<T>(List<T>, Int32),它支持增加和减少列表大小,并且应该具有更高的性能: var ints = new List<int>(); CollectionsMarshal.SetCount(ints, 20); Console.WriteLine(ints.Count); // prints 20 CollectionsMarshal.SetCount(ints, 10); Console.WriteLine(ints.Count); // prints 10 你没读过MSDN吗:- 列表是可调整大小的项目集合。可以构建列表 有多种方法,但最有用的类是 List。这可以让你 强烈键入您的列表,包括所有必要的内容 处理集合的功能,并且可以很容易地 已搜索。 进一步:- Capacity是List之前可以存储的元素数量 需要调整大小,而 Count 是调整的元素数量 实际上在列表中。 Capacity 始终大于或等于 Count。如果计数超过 容量增加元素时,容量增加 在复制旧数组之前自动重新分配内部数组 元素并添加新元素。 列表没有有限的大小。 尺寸对您来说很重要有什么原因吗? 也许数组或字典更接近您的要求

回答 8 投票 0

如何通过字符串名称访问结构体属性?

我有一个结构: typedef 结构体勾选 { 双开; 双高; 双低; 双关; 双 ema100; } 打钩; 我想访问给定密钥的属性: 勾选当前T...

回答 5 投票 0

代码运行正确,但是当编写为函数时,它不会给出分段错误[关闭]

目前我正在努力填补 std::vector> vec 我正在使用这部分代码来执行此操作: std::向量 tmp; for(int b = 0; b < 10; b++){ tmp.push_b...

回答 2 投票 0

如何在向量化函数中传递*args

对于Python中常用的*args技术,但该函数是np.vectorized。通常, *args 可以工作,但是当我对函数进行向量化并且 args 是一个向量时,它认为所有行

回答 2 投票 0

如何解析向量化函数中的*args

对于Python中常用的*args技术,但该函数是np.vectorized。通常, *args 可以工作,但是当我对函数进行向量化并且 args 是一个向量时,它认为所有行

回答 1 投票 0

如何解析向量化函数中的*args(python)

对于Python中常用的*args技术,但该函数是np.vectorized。通常, *args 可以工作,但是当我对函数进行向量化并且 args 是一个向量时,它认为所有行

回答 1 投票 0

我在这个 C++ 程序中做错了什么?

这是一个程序,使用 input() 函数在输入中获取两个向量,然后将它们的元素相加以生成名为 union_arr 的并集向量。我们正在使用 aunio() 函数来做到这一点 #包括...

回答 1 投票 0

“std::vec”与“alloc::vec”

Rust 包含 2 个相同的(通过 API)vec 模块: https://doc.rust-lang.org/std/vec/index.html https://doc.rust-lang.org/alloc/vec/index.html 有什么区别?哪个更适合使用?

回答 1 投票 0

“std::vec”与“collections::vec”

Rust 包含 2 个相同的(通过 API)vec 模块: https://doc.rust-lang.org/std/vec/index.html https://doc.rust-lang.org/alloc/vec/index.html 有什么区别?哪个更适合使用?

回答 1 投票 0

从数据框中获取与数字向量匹配的列索引?

这里、这里和这里都提出了非常相似的问题。然而,它们似乎都依赖于了解数据的列名。 我正在尝试获取与

回答 4 投票 0

计算向量中元组出现的次数

设 vec = [("A", "B"), ("A", "C"), ("A", "D"), ("B", "C"), ("B ”,“D”)] 是一个向量。 我想...

回答 1 投票 0

由于非数字向量而导致 Cohens_d 错误...但它在哪里?

我收到以下错误: 错误:无法计算非数字向量的效应大小。 当我尝试使用以下代码在 R Studio 中计算 cohens_d (RStatix) 时: > # 计算 (Cohen's D) e...

回答 3 投票 0

您建议将哪些矢量数据库用于基本语义搜索应用程序(根据应用程序内的数据返回 URL)?

我正在 neonDB、pinecone 和 weviate 之间做出选择 有什么特殊理由选择其中之一吗? 我正在 neonDB、pinecone 和 weviate 之间做出选择 有什么特别的原因吗...

回答 1 投票 0

使用 ODE15s 时出现 MATLAB 错误:函数必须在

我正在使用 MATLAB 中的 ODE15s 求解器求解四个微分方程组。我想为 W 和 PION 的每七个不同值存储 N1 N2 N3 N4 的值。我也想画 N1 N2 N3 N...

回答 1 投票 0

用于推送到其成员被引用的向量的 Rust 所有权

TL;DR:我想要一个不可变元素的向量,它允许对其成员进行短暂的不可变引用,同时能够推送它。 我正在制作一个用于精确算术的板条箱,用作 d...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.