将二维矢量传递给类
Passing 2-D vector to class
本文关键字:二维 更新时间:2023-10-16
这是我尝试将任意元素类型、内部和外部长度的N-D向量传递给类并打印其内容。我知道有一些问题,但我一直未能解决。如何将任意内部向量长度分配给一个变量或一组变量?我曾尝试将迭代器传递给构造函数,并将它们分配给成员变量(有无传递向量(,但没有成功。我知道有一些库用于处理矩阵对象和其他问题,这些问题解决了与本文中提出的问题类似的问题,然而,也有一些独特/边缘场景构成了这个问题的动机。
#include <iostream>
#include <iterator>
#include <vector>
template <typename V, typename I>
class myVec{
private:
I rows;
I cols;
std::vector< std::vector<V> > vec( rows , vector<int> (cols));
public:
myVec(std::vector< std::vector<V> > const &myArr){
vec = myArr;
rows = myArr.size();
cols = myArr[].size();
}
void printVec(){
for(int i = 0; i < vec.size(); i++){
std::cout << "{";
for(int j = 0; j < vec[i].size(); j++){
std::cout << vec[i][j];
}
if (i < vec.size()){
std::cout << "}";
if (i < vec.size()-1){
std::cout << ",";
std::cout << " ";
}
}
}
std::cout << std::endl;
}
};
int main () {
std::vector< std::vector<int> > mainVec = {{1, 2, 4}, {5, 6, 7, 8}, {4, 3, 2, 1, 7}, {8, 7, 6, 5, 9, 3}};
myVec<int, int> vec1 = myVec<int, int>(mainVec);
vec1.printVec();
return 0;
使用迭代器的基本解决方案,如之前为打印方法建议的那样。向量由const-ref传递,使用move-assign有多大优势?此时不包括索引运算符重载和访问方法,计划包括越界和其他情况的异常处理。
#include <iostream>
#include <vector>
template <typename V>
class myVec{
private:
std::vector< std::vector<V> > vec;
public:
myVec();
explicit myVec(const std::vector< std::vector<V> > &myArr):vec(myArr) {};
explicit myVec(std::vector< std::vector<V> > &&myArr):vec(std::move(myArr)) {};
}
void printVec(){
std::cout << '{';
for(auto& row:vec){
if(&row != &vec.front()) std::cout << ", ";
std::cout << '{';
if(auto cln = row.begin(); cln != row.end()) {
std::cout << *cln;
for(++cln; cln != row.end(); ++cln) std::cout << ", " << *cln;
}
std::cout << '}';
}
std::cout << '}' << std::endl;
}
};
int main () {
std::vector< std::vector<int> > mainVec = {{1, 2, 4}, {5, 6, 7, 8}, {4, 3, 2, 1, 7}, {8, 7, 6, 5, 9, 3}};
myVec<int, int> vec1 = myVec<int, int>(mainVec);
vec1.printVec();
return 0;
相关文章:
- 将二维矢量传递给类
- 将值从二维数组输出到文本文件
- 我在二维向量中是否正确分配了内存
- 带结构的二维矢量:如何存储元素
- 在二维数组中查找最小值和最大值?
- 移动二维数组中的字符
- C++ 传递二维字符数组
- 如何正确填充在堆上分配的二维数组?
- 传递二维数组时出现问题
- 具有随机数的二维数组不会更改
- 如何在C++中获取二维数组中最少的一列数?
- 如何使用用户输入变量制作二维数组?
- C++ 中的二维整数数组,每行中的元素数量不均匀
- C++ 中动态二维数组的访问冲突
- 在二维向量或数组中可以存储的最大元素数是多少?
- 如何将整数字符串转换为整数的二维向量?
- 二维矢量数据成员
- 遍历二维数组的所有子数组
- 将二维数组的所有元素插入到一维数组中
- 在函数中传递二维数组