Please write a class I
Example input:
100
10000
Example output:
100
10000
主程序 (不能修改)
#include <vector>
#include <iostream>
using namespace std;
class Tensor
{
vector<int> sizes;
vector<double> values;
int _index(const vector<int> & indexes) const {
int index = 0;
for (int i = 0; i < this->sizes.size(); ++ i) {
index *= sizes[i];
index += indexes[i];
}
return index;
}
public:
int numel() const {
if (this->sizes.size() == 0) return 0;
int size = 1;
for (int i = 0; i < this->sizes.size(); ++ i) size *= sizes[i];
return size;
}
Tensor(vector<int> sizes) {
this->sizes = sizes;
this->values.resize(this->numel());
for (int i = 0; i < this->numel(); ++ i) this->values[i] = 0;
}
double & get(const vector<int> & indexes) const {
return values[this->_index(indexes)];
}
};
#include "source.cpp"
int main() {
I sizes(3,4,5);
Tensor t(sizes);
I index(0,0,3);
cin >> t.get(index);
cout << t.get(index) << endl;
Tensor t2(I(2,3,4,5));
cin >> t2.get(I(1,2,3,4));
cout << t2.get(I(1,2,3,4)) << endl;
}
参考答案
class I
{
private:
vector<int> data;
public:
I(int x1,int x2,int x3){
data.push_back(x1);
data.push_back(x2);
data.push_back(x3);
}
I(int x1,int x2,int x3,int x4){
data.push_back(x1);
data.push_back(x2);
data.push_back(x3);
data.push_back(x4);
}
operator vector<int>() {
return data;
}
};