您好,登錄后才能下訂單哦!
下面是一個簡單的C++ Array類,用于支持多維數組:
#include <vector>
template <typename T>
class Array {
private:
std::vector<T> data;
std::vector<size_t> shape;
public:
Array(const std::vector<size_t>& shape) : shape(shape) {
size_t size = 1;
for (size_t s : shape) {
size *= s;
}
data.resize(size);
}
T& operator()(const std::vector<size_t>& indices) {
size_t index = 0;
size_t multiplier = 1;
for (size_t i = 0; i < indices.size(); i++) {
index += indices[i] * multiplier;
multiplier *= shape[i];
}
return data[index];
}
};
使用示例:
int main() {
Array<int> arr({2, 3});
arr({0, 0}) = 1;
arr({0, 1}) = 2;
arr({0, 2}) = 3;
arr({1, 0}) = 4;
arr({1, 1}) = 5;
arr({1, 2}) = 6;
std::cout << arr({0, 0}) << std::endl;
std::cout << arr({0, 1}) << std::endl;
std::cout << arr({0, 2}) << std::endl;
std::cout << arr({1, 0}) << std::endl;
std::cout << arr({1, 1}) << std::endl;
std::cout << arr({1, 2}) << std::endl;
return 0;
}
這個Array類實現了一個簡單的多維數組,可以通過傳入不同維度的shape來創建不同維度的數組。可以通過傳入一個包含各個維度下標的向量來訪問和修改數組中的元素。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。