在科学计算、图形学、机器学习等领域,C++向量运算是一项基础而重要的技能。本文将手把手教你如何使用C++标准库中的 std::vector 实现基本的向量操作,包括向量加法、减法和点积(内积)。即使你是编程小白,也能轻松上手!

在数学中,向量是一个有方向和大小的量,通常用一组数字表示(例如二维向量 [x, y] 或三维向量 [x, y, z])。在C++中,我们可以使用 std::vector<double> 来存储这些数值。
首先,我们需要包含以下头文件:
#include <iostream>#include <vector>#include <stdexcept> // 用于异常处理两个向量相加,就是对应位置的元素相加。例如:[1, 2] + [3, 4] = [4, 6]。
我们先写一个函数来实现这个功能,并确保两个向量长度相同:
std::vector<double> addVectors(const std::vector<double>& a, const std::vector<double>& b) { if (a.size() != b.size()) { throw std::invalid_argument("向量维度不一致,无法相加!"); } std::vector<double> result(a.size()); for (size_t i = 0; i < a.size(); ++i) { result[i] = a[i] + b[i]; } return result;}向量减法同理,对应元素相减:
std::vector<double> subtractVectors(const std::vector<double>& a, const std::vector<double>& b) { if (a.size() != b.size()) { throw std::invalid_argument("向量维度不一致,无法相减!"); } std::vector<double> result(a.size()); for (size_t i = 0; i < a.size(); ++i) { result[i] = a[i] - b[i]; } return result;}点积是两个向量对应元素相乘后再求和,结果是一个标量(单个数字)。例如:[1, 2] · [3, 4] = 1×3 + 2×4 = 11。
double dotProduct(const std::vector<double>& a, const std::vector<double>& b) { if (a.size() != b.size()) { throw std::invalid_argument("向量维度不一致,无法计算点积!"); } double result = 0.0; for (size_t i = 0; i < a.size(); ++i) { result += a[i] * b[i]; } return result;}下面是一个完整的可运行示例,演示了如何使用上述函数:
#include <iostream>#include <vector>#include <stdexcept>std::vector<double> addVectors(const std::vector<double>& a, const std::vector<double>& b) { if (a.size() != b.size()) { throw std::invalid_argument("向量维度不一致,无法相加!"); } std::vector<double> result(a.size()); for (size_t i = 0; i < a.size(); ++i) { result[i] = a[i] + b[i]; } return result;}double dotProduct(const std::vector<double>& a, const std::vector<double>& b) { if (a.size() != b.size()) { throw std::invalid_argument("向量维度不一致,无法计算点积!"); } double result = 0.0; for (size_t i = 0; i < a.size(); ++i) { result += a[i] * b[i]; } return result;}int main() { std::vector<double> v1 = {1.0, 2.0, 3.0}; std::vector<double> v2 = {4.0, 5.0, 6.0}; auto sum = addVectors(v1, v2); double dot = dotProduct(v1, v2); std::cout << "v1 + v2 = ["; for (size_t i = 0; i < sum.size(); ++i) { std::cout << sum[i]; if (i != sum.size() - 1) std::cout << ", "; } std::cout << "]\n"; std::cout << "v1 · v2 = " << dot << std::endl; return 0;}通过本教程,你已经掌握了如何用C++实现基本的C++向量运算,包括加法、减法和点积。这些操作是C++线性代数编程的基础,也是学习更高级算法(如机器学习或物理模拟)的重要一步。
记住,在实际项目中,你也可以考虑使用成熟的数学库(如Eigen、Armadillo),但理解底层原理对提升编程能力至关重要。希望这篇C++ vector教程对你有所帮助!
如果你正在学习向量加减法C++实现,不妨动手敲一遍代码,加深理解!
本文由主机测评网于2025-12-22发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251211253.html