C++中不同维度的数据保存与读取

C++中不同维度的数据保存与读取

  • 一、保存csv数据
    • [1.1 一维vector](#1.1 一维vector)
    • [1.2 二维vector](#1.2 二维vector)
    • [1.3 三维vector](#1.3 三维vector)
    • [1.4 五维vector](#1.4 五维vector)
  • 二、读取csv数据
    • [2.1 一维vector](#2.1 一维vector)
    • [2.2 二维vector](#2.2 二维vector)
    • [2.3 三维vector](#2.3 三维vector)
    • [2.4 五维vector](#2.4 五维vector)

一、保存csv数据

1.1 一维vector

cpp 复制代码
void Save_bias(vector<double> &bias, string names)
{
	string folderPath = "..//parameter_bias//" + names;
	if (0 != _access(folderPath.c_str(), 0))
	{
		_mkdir(folderPath.c_str());
	}
	ofstream pxData;
	pxData.open(folderPath + "//0.csv", std::ios::out | std::ios::trunc);
	for (int i = 0; i < bias.size(); i++)
	{
		if (i == bias.size() - 1)
		{
			pxData << bias[i] << std::endl;
		}
		else
		{
			pxData << bias[i] << ",";
		}
	}
	pxData.close();
}

1.2 二维vector

cpp 复制代码
void Save_means(vector<vector<double>> &means, string names)
{
	string folderPath = "..//parameter_mpvs//" + names;
	if (0 != _access(folderPath.c_str(), 0))
	{
		_mkdir(folderPath.c_str());
	}
	ofstream pxData;
	pxData.open(folderPath + "//0.csv", std::ios::out | std::ios::trunc);
	for (int i = 0; i < means.size(); i++)
	{
		for (int j = 0; j < means[i].size(); j++)
		{
			if (j == means[i].size() - 1)
			{
				pxData << means[i][j] << std::endl;
			}
			else
			{

				pxData << means[i][j] << ",";
			}
		}

	}
	pxData.close();
}

1.3 三维vector

cpp 复制代码
void Save_weight(vector<vector<vector<double>>> &weight, string names)
{
	string folderPath = "..//parameter_weight//" + names;
	if (0 != _access(folderPath.c_str(), 0))
	{
		_mkdir(folderPath.c_str());
	}
	for (int j = 0; j < weight.size(); j++)
	{
		ofstream pxData;
		if (j < 10)
		{
			pxData.open(folderPath + "//0" + to_string(j) + ".csv", std::ios::out | std::ios::trunc);
		}
		else
		{
			pxData.open(folderPath + "//" + to_string(j) + ".csv", std::ios::out | std::ios::trunc);
		}
		for (int p = 0; p < weight[j].size(); p++)
		{
			for (int q = 0; q < weight[j][p].size(); q++)
			{
				if (q == weight[j][p].size() - 1)
				{
					pxData << weight[j][p][q] << std::endl;
				}
				else
				{
					pxData << weight[j][p][q] << ",";
				}
			}
		}
		pxData.close();
	}
}

1.4 五维vector

cpp 复制代码
void Save_weight(vector<vector<vector<vector<vector<double>>>>> weight, string names)
{
	string init_file = "..//parameter_weight";
	if (0 != _access(init_file.c_str(), 0))
	{
		_mkdir(init_file.c_str());
	}
	string folderPath = init_file + "//" + names;
	if (0 != _access(folderPath.c_str(), 0))
	{
		_mkdir(folderPath.c_str());
	}
	for (int i = 0; i < weight.size(); i++)
	{
		string folderPaths = folderPath + "//" + to_string(i);
		if (0 != _access(folderPaths.c_str(), 0))
		{
			_mkdir(folderPaths.c_str());
		}
		for (int j = 0; j < weight[i].size()*weight[i][0].size(); j++)
		{
			ofstream pxData;
			if (j < 10 && weight[i].size()*weight[i][0].size() > 9)
			{
				pxData.open(folderPaths + "//0" + to_string(j) + ".csv", std::ios::out | std::ios::trunc);
			}
			else
			{
				pxData.open(folderPaths + "//" + to_string(j) + ".csv", std::ios::out | std::ios::trunc);
			}
			for (int p = 0; p < weight[i][j / weight[i].size()][j % weight[i][0].size()].size(); p++)
			{
				for (int q = 0; q < weight[i][j / weight[i].size()][j % weight[i][0].size()][p].size(); q++)
				{
					if (q == weight[i][j / weight[i].size()][j % weight[i][0].size()][p].size() - 1)
					{
						pxData << weight[i][j / weight[i].size()][j % weight[i][0].size()][p][q] << std::endl;
					}
					else
					{
						pxData << weight[i][j / weight[i].size()][j % weight[i][0].size()][p][q] << ",";
					}
				}
			}
			pxData.close();
		}
	}
}

二、读取csv数据

2.1 一维vector

cpp 复制代码
void Read_bias(vector<double> &bias, string names)
{
	string folderPath = "..//parameter_bias//" + names;
	ifstream infile(folderPath + "//0.csv", ifstream::_Nocreate);
	string line, number;
	while (std::getline(infile, line))
	{
		istringstream is(line);
		vector<double> lineArray;
		while (std::getline(is, number, ','))
		{
			lineArray.push_back(atof(number.c_str()));
		}
		bias = lineArray;
	}
}

2.2 二维vector

cpp 复制代码
void Read_means(vector<vector<double>> &means, string names)
{
	string folderPath = "..//parameter_means//" + names;
	ifstream infile(folderPath + "//0.csv", ifstream::_Nocreate);
	string line, number;
	while (std::getline(infile, line))
	{
		istringstream is(line);
		vector<double> lineArray;
		while (std::getline(is, number, ','))
		{
			lineArray.push_back(atof(number.c_str()));
		}
		means.push_back(lineArray);
	}
}

2.3 三维vector

cpp 复制代码
void Read_weight(vector<vector<vector<double>>> &weight, string names)
{
	string folderPath = "..//parameter_weight//" + names;
	string dir;
	for (int j = 0; j < weight.size(); j++)
	{
		ofstream pxData;
		if (j < 10)
		{
			dir = folderPath + "//0" + to_string(j) + ".csv";
		}
		else
		{
			dir = folderPath + "//" + to_string(j) + ".csv";
		}
		ifstream infile(dir, ifstream::_Nocreate);
		string line, number;
		vector<vector<double>> x;
		while (std::getline(infile, line))
		{
			istringstream is(line);
			vector<double> lineArray;

			while (std::getline(is, number, ','))
			{
				lineArray.push_back(atof(number.c_str()));
			}
			x.push_back(lineArray);
		}
		weight[j] = x;
	}
}

2.4 五维vector

cpp 复制代码
void Read_weight(vector<vector<vector<vector<vector<double>>>>> &_weight, string names)
{
	string dir_path = "..//parameter_weight";
	for (int i = 0; i < _weight.size(); i++)
	{
		for (int j = 0; j < _weight[i].size()*_weight[i][0].size(); j++)
		{
			string dir;
			if (j < 10 && _weight[i].size()*_weight[i][0].size() > 9)
			{
				dir = dir_path + "//" + names + "//" + to_string(i) + "//0" + to_string(j) + ".csv";
			}
			else
			{
				dir = dir_path + "//" + names + "//" + to_string(i) + "//" + to_string(j) + ".csv";
			}
			ifstream infile(dir, ifstream::_Nocreate);
			string line, number;
			vector<vector<double>> x;
			while (std::getline(infile, line))
			{
				istringstream is(line);
				vector<double> lineArray;

				while (std::getline(is, number, ','))
				{
					lineArray.push_back(atof(number.c_str()));
				}
				x.push_back(lineArray);
			}
			_weight[i][j / _weight[i].size()][j % _weight[i][0].size()] = x;
		}
	}
}
相关推荐
点云SLAM20 分钟前
C++中内存池(Memory Pool)详解和完整示例
开发语言·c++·内存管理·内存池·new/delete·malloc/free
程高兴1 小时前
遗传算法求解冷链路径优化问题matlab代码
开发语言·人工智能·matlab
wow_DG1 小时前
【C++✨】多种 C++ 解法固定宽度右对齐输出(每个数占 8 列)
开发语言·c++·算法
Epiphany.5561 小时前
c++最长上升子序列长度
c++·算法·图论
CHEN5_021 小时前
【Java基础】反射,注解,异常,Java8新特性,object类-详细介绍
java·开发语言
Cx330❀2 小时前
【数据结构初阶】--排序(四):归并排序
c语言·开发语言·数据结构·算法·排序算法
云间月13142 小时前
飞算JavaAI智慧文旅场景实践:从景区管理到游客服务的全链路系统搭建
java·开发语言
杜子不疼.2 小时前
《Python学习之使用标准库:从入门到实战》
开发语言·python·学习
意疏2 小时前
【C语言篇】srand函数的详细用法解析
c语言·开发语言
艾莉丝努力练剑2 小时前
【C语言16天强化训练】从基础入门到进阶:Day 1
c语言·开发语言·数据结构·学习