#include "sparse-matrix.h"
#include <stdexcept>
#include <sstream>
#include <iostream>
template<class T>
T SparseMatrix<T>::get(unsigned int row, unsigned int column)const
{
if(row >= this->row_size || column >= this->column_size)
throw std::out_of_range("recived argument out of matrix range.");
for(auto it = this->matrix.begin(); it != this->matrix.end(); ++it)
{
if(it->number < column) continue;
else if(it->number == column)
{
for(auto jt = it->data.begin(); jt != it->data.end(); ++jt)
{
if(jt->number < row) continue;
else if(jt->number == row) return jt->data;
else if(jt->number > row) break;
}
break;
}
else if(it->number > column) break;
}
return T(0);
}
template<class T>
void SparseMatrix<T>::set(unsigned int row, unsigned int column, T data)
{
if(row >= this->row_size || column >= this->column_size)
throw std::out_of_range("recived argument out of matrix range.");
auto it = this->matrix.begin();
for(; it != this->matrix.end(); ++it)
{
if(it->number < column) continue;
else if(it->number == column)
{
for(auto jt = it->data.begin(); jt != it->data.end(); ++jt)
{
if(jt->number < row) continue;
else if(jt->number == row) jt->data = data;
else if(jt->number > row)
it->data.insert(jt, SparseMatrix<T>::Row{data, row});
break;
}
return;
}
}
std::list< SparseMatrix<T>::Row > new_row{ SparseMatrix<T>::Row{data,row} };
SparseMatrix<T>::Column new_column{new_row, column};
this->matrix.insert(it, new_column);
}
template<class T>
SparseMatrix<T>::operator std::string()const
{
std::stringstream ss;
for(unsigned int i = 0; i < this->row_size; ++i)
{
for(unsigned int j = 0; j < this->column_size; ++j)
ss << this->get(i,j) << " ";
ss << std::endl;
}
return ss.str();
}
振华OPPO
- 粉丝: 40w+
- 资源: 570
最新资源
- CC2530无线zigbee裸机代码实现按键控制LED开关.zip
- CC2530无线zigbee裸机代码实现按键控制PWM灯光强度.zip
- CC2530无线zigbee裸机代码实现按键控制流水灯.zip
- 无感FOC电机三相控制高速吹风筒方案 FU6812L+FD2504S 电压AC220V 功率80W 最高转速20万RPM 方案优势:响应快、效率高、噪声低、成本低 控制方式:三相电机无感FOC 闭环方
- CC2530无线zigbee裸机代码实现查询方式使用定时器.zip
- CC2530无线zigbee裸机代码实现串口UART0发送字符串.zip
- CC2530无线zigbee裸机代码实现串口UART0收发字符串.zip
- CC2530无线zigbee裸机代码实现串口发送指令控制LED灯.zip
- CC2530无线zigbee裸机代码实现定时器T1的使用.zip
- CC2530无线zigbee裸机代码实现定时器T3的使用.zip
- 基于51单片机的PWM波形发生器设计(Protues仿真)-毕业设计
- 模块化多电平变流器 MMC 的VSG控制 同步发电机控制 MATLAB–Simulink仿真模型 5电平三相MMC,采用VSG控制 受端接可编辑三相交流源,直流侧接无穷大电源提供调频能量 设置频率
- 锁相环学习电路,有教程 对新手非常友好,一看就懂 1,输出频率800MHz或者1GHz, 采用Ring-VCO的结构 2,输入参考频率20MHz 3,分频器是40-50分频 4,电荷泵电流
- MF000588-ASP.NET信息中心标准化管理系统源码.zip
- 基于51单片机的烟雾采集报警系统(protues仿真)-毕业设计
- 模拟器银河麒麟是基于Linux发行版Ubuntu开发的自主可控操作系统,为我国信息基础建设提供了重要支撑 截至目前,银河麒麟V10的软件仓库已经提供了大量国产软件,但在特定情况下,我们可能还是希望使用
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈