我的问题似乎与vector of objects vs vector of pointers to objects类似,但阅读并没有回答我的问题。
我将避免详细说明为什么我的程序按其原样进行结构化,因为这并不是特别重要。
重申一下,我有一个vector(C),每个包含三个指针,指向vector(B),每个包含18个指针,指向streampos的vector(A)。
每次main()调用nuc()时,都会将一个特定的B传递给nuc()(因为三个B各自包含18个A)。每次nuc()调用check()时,都会将相关的特定A(例如A16)传递给它。 Check()然后push_back()将值放入相关的A。
引起我注意的是,我需要为每个streampos向量生成一个int向量以承载相关信息,但是从字面上实例化108个向量似乎很奇怪。我一直在考虑将每个B实例化为18个向量的向量。
将值推入其子向量中是否会有任何问题push_back()?除了实例化108个向量的视觉愚蠢性之外,我是否还应该选择一个向量来代替向量指针的向量?除了我提到的向量,向量的向量比前者有什么好处?
很抱歉,这个问题很简单,这是我的第一个C ++程序,我浏览了大约7页关于该主题的页面,但是却很难找到答案。
这是一个伪代码示例:
fstream file1;
vector<streampos> A0_0...A0_18, A1_0...A1_18,...
vector<vector<streampos>*> B0 = {&A0_0...&A0_18},
B1 = {&A1_0...&A1_18}...
vector<vector<vector<streampos>*>*> C = {&B0, &B1, &B2}
main()
string line;
while(getline(file1,line))
int B_determiner = line[-1] //suppose 0
vector<vector<streampos>*> B = C[B_determiner] //suppose B0
nuc(line, B)
nuc(string line,vector<vector<streampos>*> B) // B = B0
string new_line = line.do stuff to line...
A_determiner = new_line[0]
A = B[A_determiner] //suppose A0, therefore A0_0
check(new_line, A)
check(string new_line, vector<streampos> A) //A = A0_0
streampos value = derive a streampos from new_line...
A.pushback(value)