如何定义一个包含可变维向量的类,以及如何使用这个类
How to define a class which contains a variable dimension vector and how to use this class?
我想定义一个类,它包含可变维向量,我定义了一个构造函数来初始化它。
现在的问题是我该如何使用它?我想使用另一个向量来包含这个类对象的多个。
#include <iostream>
#include <vector>
using namespace std;
class block {
public:
long Nx,Ny;
vector<long> S;
block(long &nx, long &ny):Nx(nx),Ny(ny),S((nx+1)*(ny+1),0) {}
};
int main() {
vector<block> B;
B.push_back(B(2,2)); //I believe this is wrong, but how can I do this?
B.push_back(B(1,2));
for(int k=B.begin(); k<=B.end(); k++) {
for(int i=B[k].S.begin();i<=B[k].S.end();i++) {
cout<<B[k].S[i];
}
}
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
class block {
public:
long Nx,Ny;
vector<long> S;
block(long nx, long ny):Nx(nx),Ny(ny),S((nx+1)*(ny+1),0) {}
//^^^^^^^^^^^^^^^^ not necessary to use inference
};
int main() {
vector<block> B;
B.push_back(block(2,2)); //use block(2,2)
for(int i=0;i<B[0].S.size();i++) {
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^the right way to traversal the vector
cout<<B[0].S[i];
}
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
我相信这就是您想要的:
B.push_back(block(2,2));
for(int bi = 0; bi < B.size(); bi++ )
{
block & refBlock = B[bi];
for( int i = 0; i < refBlock.S.size(); i++ ) {
cout << refBlock.S[i] << "n";
}
}
外循环通过矢量CCD_ 1。我们获取对B
的一个元素的引用,这样我们就不必一直写B[bi]
,然后内部循环为该block
输出S
的所有元素。
如果你只想要向量B
的第一个元素,那么你可以忘记外循环,用B[0]
代替refBlock
,或者这样做:
block & refBlock = B[0];
B.push_back(block(2,2));
for(vector<long>::iterator i=B[0].S.begin();i<=B[0].S.end();i++) {
cout<<*i;
}
#include <iostream>
#include <vector>
using namespace std;
class block {
public:
long Nx,Ny;
vector<long> S;
block(long nx, long ny):Nx(nx),Ny(ny),S((nx+1)*(ny+1),0) {}
//^^^^^^^^^^^^^^^^ not necessary to use inference
};
int main() {
vector<block> B;
B.push_back(block(2,2)); //use block(2,2)
B.push_back(block(2,1));
for (int k=0; k<=B.size(); k++) {
block & refBlock = B[k];
for(int i=0; i<=refBlock.S.size(); i++) {
cout<<refBlock.S[i];
}
cout<<endl;
}
return 0;
}
我运行了这个程序,但结果很奇怪,输出如下:
00000000049
0000000
然而,我所期望的是:
000000000
000000
相关文章:
- 如何使用向量的template_back函数
- 在c++中使用向量时,如何调用构造函数和析构函数
- 使用向量类的c++指针
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 代码使用向量成功运行,但使用数组显示错误
- 使用向量初始化参数化构造函数的对象数组
- 使用向量在 c++ 中合并排序实现
- 使用向量的缓冲区溢出
- 从数组中删除非唯一值、保持顺序和不使用向量的最佳方法?
- C++ 继承向量问题(无限循环+在其他类中使用向量的问题)
- C++ 不能在cout中使用向量和字符串文字
- 目标C++不能在枚举块中使用向量push_back
- 在 c++ 中,如何使用向量调用派生类?
- 在类和构造函数中使用向量时出现分段错误
- C++如何调用使用向量的成员函数
- Sysmalloc:使用向量的断言错误
- 有没有一种优雅的方法可以使用向量修改器并获得新的向量,而不是更改原始向量
- 在 extern 中声明一个使用向量的函数 "C" {}
- 如何修复错误:使用向量查找最小值和最大值进行合并排序