好的,我已經閱讀並且似乎無法找到與我的問題相匹配的答案。 This是我能找到的最接近的。C++:是否有可能/建議基於運行時條件聲明變量?
我的情況是:我有三組變量,程序執行A組並根據用戶指定的標誌設置B或設置C.所有組的值也是用戶定義的。目前,我有這樣的事情:
#include <iostream>
#include <string>
#include <cmath>
int main()
{
//Set A
double a,b,c;
bool flag;
std::cout << "Set Flag" << '\n';
std::cin >> flag;
if(flag)
{
//Set B
double x1,x2,y1,y2,z;
std::cout << "Set Variable X1." << '\n';
std::cin >> x1;
std::cout << "Set Variable X2." << '\n';
std::cin >> x2;
std::cout << "Set Variable Y1." << '\n';
std::cin >> y1;
std::cout << "Set Variable Y2." << '\n';
std::cin >> y2;
std::cout << "Set Parameter Z." << '\n';
std::cin >> z;
//Some operations based on set B
a = x+y;
}
else
{
//Set C
double t,u,v;
std::cout << "Set Variable T." << '\n';
std::cin >> t;
std::cout << "Set Variable U." << '\n';
std::cin >> u;
std::cout << "Set Parameter V." << '\n';
std::cin >> v;
//Some operations based on set C
a = t+u;
}
// I want to do more operations common to both sets here using data from selected set...
// Write to file, etc.
}
哪種方式會更好:申報所有可能的變量第一,或者完全用叉子叉的代碼使的if/else代碼完成,作爲標誌改變幾個關鍵的內雖然我想要做的很多事情都是類似的。
條件之間的主要區別是,如果標誌爲true,程序將使用一些數組/向量,而如果標誌爲false,則使用單個值。
您是否在問性能,可讀性,可維護性或其他組合?如果您在代碼中使用UI,任何性能差異都如此微不足道,應該忽略。可讀性和可維護性通常通過延遲變量聲明直到需要並提供該值爲佳。但是合併路徑之間的任何真正的通用性也會提高可讀性和可維護性。 – JSF
你應該選擇一種語言。 – juanchopanza
你似乎正在描述一種情況,在這種情況下,推遲「a」的聲明直到它的第一個分配值準備就緒是不切實際的。我從來沒有對這些情況感到激動。但是你需要滿足問題的要求。但是你似乎正在考慮走向另一個極端,並且早就毫無意義地放下'x'等的聲明。我認爲這是一個壞主意。 – JSF