vector的用法

### 关于Vector数据结构的使用方法与示例 #### 1. C++ STL中的`std::vector` `std::vector` 是C++标准模板库(STL)中的一种动态数组容器,支持随机访问,并且可以在运行时调整大小。以下是其常用接口及使用示例: - **构造函数**:可以通过多种方式创建一个 `std::vector`。 ```cpp #include <vector> #include <iostream> int main() { // 创建空向量 std::vector<int> v1; // 使用初始值创建向量 std::vector<int> v2(5, 10); // 向量包含5个元素,每个元素值为10 // 从另一个向量复制 std::vector<int> v3(v2); return 0; } ``` - **增删改查操作**: ```cpp #include <vector> #include <iostream> int main() { std::vector<int> v = {1, 2, 3, 4, 5}; // 插入元素 v.push_back(6); // 在末尾插入元素6 [^1] // 删除元素 v.pop_back(); // 删除最后一个元素 [^1] // 修改元素 v[0] = 10; // 将第一个元素修改为10 [^1] // 查找元素 for (int i : v) { std::cout << i << " "; } return 0; } ``` #### 2. Spark MLlib中的`Vector` 在Spark MLlib中,`Vector` 是一种表示数值向量的数据结构,主要分为两种实现形式:`DenseVector` 和 `SparseVector`。以下是如何创建和使用这两种向量的示例: - **DenseVector**:存储所有元素,包括零值。 ```scala import org.apache.spark.ml.linalg.Vectors val dv: org.apache.spark.ml.linalg.Vector = Vectors.dense(1.0, 0.0, 3.0) [^2] ``` - **SparseVector**:仅存储非零元素,节省内存。 ```scala import org.apache.spark.ml.linalg.Vectors // 使用索引和值创建稀疏向量 val sv1: org.apache.spark.ml.linalg.Vector = Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0)) [^2] // 使用键值对创建稀疏向量 val sv2: org.apache.spark.ml.linalg.Vector = Vectors.sparse(3, Seq((0, 1.0), (2, 3.0))) [^2] ``` #### 3. Java中的`Vector`类 Java中的`Vector`类是一个线程安全的动态数组实现,但由于其性能较低,通常推荐使用`ArrayList`替代。以下是其基本用法: - **创建和初始化**: ```java import java.util.Vector; public class Main { public static void main(String[] args) { Vector<Integer> vector = new Vector<>(); // 创建空向量 vector.add(1); // 添加元素 vector.add(2); System.out.println(vector); // 输出向量内容 [^4] } } ``` - **同步特性**: 由于每个方法都带有`synchronized`关键字,因此在多线程环境中可以安全使用,但会牺牲一定的性能。 #### 4. STL中`std::vector`的特点 `std::vector` 是STL中最常用的容器之一,具有动态扩展、随机访问等特性。它允许程序员通过简单的接口操作数据,同时提供高效的内存管理机制[^3]。 --- ###
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值