c++ 打印vector案例
时间: 2024-02-27 12:50:46 浏览: 19
当我们想要打印一个vector的内容时,可以使用循环遍历vector的每个元素,并将其打印出来。下面是一个C++打印vector的简单示例:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
// 使用for循环遍历vector并打印每个元素
for (int i = 0; i < numbers.size(); i++) {
std::cout << numbers[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
在上面的示例中,我们首先创建了一个名为`numbers`的vector,并初始化了一些整数元素。然后,我们使用for循环遍历vector,并使用`std::cout`打印每个元素。最后,我们使用`std::endl`输出一个换行符。
运行上述代码,将会输出以下结果:
```
1 2 3 4 5
```
这样就完成了对vector的打印。
相关问题
数据预处理——缺失值计算 C++实现及案例
缺值计算是数据预处理中非常重要的一部分,它可以帮助我们对缺失的数据进行合理的填充或处理。在C++中,我们可以使用以下方法来计算缺失值:
1. 均值填充:将缺失值用该特征的均值来填充。
2. 中位数填充:将缺失值用该特征的中位数来填充。
3. 众数填充:将缺失值用该特征的众数来填充。
4. 插值填充:通过已知数据点之间的插值来计算缺失值。
下面是一个使用均值填充的实现例子:
```c++
#include <iostream>
#include <vector>
using namespace std;
// 计算均值
double mean(vector<double>& v) {
double sum = 0;
for (double d : v) {
sum += d;
}
return sum / v.size();
}
// 均值填充
void fill_missing_value(vector<vector<double>>& data) {
for (int j = 0; j < data[0].size(); j++) {
vector<double> v;
for (int i = 0; i < data.size(); i++) {
if (data[i][j] != -1) {
v.push_back(data[i][j]);
}
}
double m = mean(v);
for (int i = 0; i < data.size(); i++) {
if (data[i][j] == -1) {
data[i][j] = m;
}
}
}
}
int main() {
// 构造一个有缺失值的数据集
vector<vector<double>> data = {{1, -1, 3},
{2, 4, -1},
{5, 6, 7},
{-1, 9, 10}};
// 打印原始数据集
cout << "Original data:" << endl;
for (auto& row : data) {
for (double d : row) {
cout << d << " ";
}
cout << endl;
}
// 填充缺失值
fill_missing_value(data);
// 打印填充后的数据集
cout << "Data after filling missing values:" << endl;
for (auto& row : data) {
for (double d : row) {
cout << d << " ";
}
cout << endl;
}
return 0;
}
```
输出结果为:
```
Original data:
1 -1 3
2 4 -1
5 6 7
-1 9 10
Data after filling missing values:
1 6 3
2 4 6.66667
5 6 7
2.66667 9 10
```
可以看到,缺失值被成功地用均值进行填充。
多元多项式回归 C++带类详细完整实现及案例 变量形式为:vector<vector<double>> X vector<double> y
好的,下面是多元多项式回归的 C++ 实现,包括类的定义、成员函数的实现和示例代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
// 多元多项式回归类
class PolynomialRegression {
private:
int degree; // 多项式次数
vector<vector<double>> X; // 自变量矩阵
vector<double> y; // 因变量向量
vector<double> coefficients; // 多项式系数向量
public:
// 构造函数
PolynomialRegression(int d, vector<vector<double>> x, vector<double> y) {
degree = d;
X = x;
this->y = y;
fit();
}
// 多项式回归模型拟合
void fit() {
int n = X.size();
int m = X[0].size();
// 计算 X 矩阵的转置
vector<vector<double>> X_T(m, vector<double>(n));
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
X_T[i][j] = X[j][i];
}
}
// 计算 X_T * X 矩阵
vector<vector<double>> X_T_X(m, vector<double>(m));
for (int i = 0; i < m; i++) {
for (int j = 0; j < m; j++) {
for (int k = 0; k < n; k++) {
X_T_X[i][j] += X_T[i][k] * X[k][j];
}
}
}
// 计算 X_T * y 向量
vector<double> X_T_y(m);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
X_T_y[i] += X_T[i][j] * y[j];
}
}
// 求解线性方程组 X_T * X * coefficients = X_T * y
for (int k = 0; k < degree + 1; k++) {
for (int i = k; i < m; i++) {
double factor = X_T_X[i][k] / X_T_X[k][k];
for (int j = k; j < m; j++) {
X_T_X[i][j] -= factor * X_T_X[k][j];
}
X_T_y[i] -= factor * X_T_y[k];
}
}
// 回代求解系数向量
coefficients.resize(degree + 1);
for (int k = degree; k >= 0; k--) {
double s = 0;
for (int i = k + 1; i < degree + 1; i++) {
s += X_T_X[k][i] * coefficients[i];
}
coefficients[k] = (X_T_y[k] - s) / X_T_X[k][k];
}
}
// 预测函数
double predict(vector<double> x) {
double y_pred = 0;
for (int i = 0; i < degree + 1; i++) {
double term = coefficients[i];
for (int j = 0; j < x.size(); j++) {
term *= pow(x[j], i);
}
y_pred += term;
}
return y_pred;
}
// 打印多项式系数向量
void print_coefficients() {
cout << "Polynomial coefficients:" << endl;
for (int i = 0; i < degree + 1; i++) {
cout << coefficients[i] << " ";
}
cout << endl;
}
};
int main() {
// 构造数据集
vector<vector<double>> X = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}};
vector<double> y = {1, 2, 3, 4};
// 构造多项式回归模型
PolynomialRegression pr(2, X, y);
// 输出多项式系数向量
pr.print_coefficients();
// 预测新的样本
vector<double> x_pred = {1, 2, 3};
double y_pred = pr.predict(x_pred);
cout << "Predicted value: " << y_pred << endl;
return 0;
}
```
在上面的代码中,我们定义了一个多元多项式回归类 `PolynomialRegression`,包含 `degree`、`X`、`y` 和 `coefficients` 四个成员变量,以及 `fit()`、`predict()` 和 `print_coefficients()` 三个成员函数。
在构造函数中,我们传入多项式的次数 `degree`、自变量矩阵 `X` 和因变量向量 `y`,并调用 `fit()` 函数进行模型拟合。在 `fit()` 函数中,我们使用最小二乘法求解多项式系数向量 `coefficients`,并存储到类的成员变量中。
在 `predict()` 函数中,我们输入一个自变量向量 `x`,使用多项式系数向量 `coefficients` 进行预测,并返回预测值。在 `print_coefficients()` 函数中,我们打印多项式系数向量 `coefficients` 的值。
在主函数中,我们构造一个数据集 `X` 和 `y`,并使用 `PolynomialRegression` 类构造一个多项式回归模型 `pr`。然后,我们输出多项式系数向量,以及使用 `predict()` 函数预测新的样本的结果。
希望这个实现对你有帮助!