[問題] tuple如何用for迴圈取值
開發平台(Platform): (Ex: Win10, Linux, ...)
Win10 + linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
VS2015 + GCC 7.X
VS2015目前支援C++11、部分C++14 C++17
https://tinyurl.com/yckr4kkp
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
1. 想要同時能在win10 + VS2015跑 與 linux + GCC跑
但是linux環境不被允許安裝程式,希望靠C++的手段完成
2. 想要能自動產生不同參數的模擬結果
原本想參考之前有大大推薦的googleTest
VS要安裝十分簡單
但是linux上因為是伺服器,不給安裝這些東西
(我還在煩惱FFTW如何不安裝下,直接從source code include的方式執行Orz)
3. 因為不能安裝googleTest,只能用蠢方法
先產生主程式,再產生另一個用來給參數的程式S
利用程式S直接透過給system + 給參數的方式呼叫主程式同時給參數
完成有 (1) 限定同時跑幾隻不同參數的主程式
(2) 完成有同時能根據程式完成時,自動call 下一隻主程式
(
判斷完成條件是,主程式會再開始與結束時候寫檔,
程式S根據檔案內容得知程式是否完成
原本想用多執行緒來完成,不過看起來修改起來複雜度不低
這個方向感覺走遠了,就放棄了
)
4. 原本已完成的程式做法是
在程式S 決定要給的參數有哪些
比如
int Var1[] = { 1, 2, 3 }
int size1 = sizeof(Var1) / sizeof(Var1[0]);
double Var2[] = { 4.0, 5.5 }
int size2 = sizeof(Var2) / sizeof(Var2[0]);
int total_num = size1 * size2;
// ========= control ==========
int idx1 = 0;
int idx2 = 0;
while(1) {
.......
if (program_done) {
idx1++;
if (idx1 == size1) {
idx1 = 0;
idx2++;
if (idx2 == size2)
break; // done
}
execute_new_program
}
}
另外,由於可能會多Var3, Var4等等
故每次都要跟著新增Var3, size3, idx3, break條件修改
覺得while-loop的部分實在不夠聰明,每次Var數量改變都要做增減
其中Var3以及要丟給主程式的參數部分一定要修改外,
想用用看新學到的語法,看能不能讓code盡量少被動
(尤其是下面while迴圈)
5. 目前改進的部分
將Var1, Var2改成vector
利用auto塞到tuple
auto tuple_vector = make_tuple(Var1, Var2);
int tuple_vector_size = tuple_size<decltype(tuple_vector)> ::value;
所目前為止,可以知道有幾個Var,應該是可以讓他自動知道要根據哪個idx判斷break
再來是個別的vector有多長,來得到我總共要跑幾次主程式
原本想使用
vector<int> vector_Var_size;
for (int i = 0; i < tuple_vector_size; i++) {
int size = get<i>(tuple_vector).size();
vector_Var_size.push(size);
}
但是get<N>,N必須常數
6. 找到的相關可能解法
https://tinyurl.com/y9trwj75
好像可以用boost:Fusion,但是卡在如何在不安裝的情況下使用
內容有點多
這次想要盡量將問題說明清楚
希望改進前幾次發文的缺點
--
標題 [笑話] 唐三藏的願望
唐三藏:八戒,你跑兩步給為師看看。
八 戒:師父,你為啥突然想看徒兒跑步?
唐三藏:哎啊!慚愧,為師自幼在寺中長大,既沒吃過豬肉,也沒看過豬跑步。
噓
01/16 21:40,
01/16 21:40
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.204.170 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1593435068.A.710.html
※ 編輯: ofd168 (60.250.204.170 臺灣), 06/29/2020 20:54:11
推
06/29 21:41,
5年前
, 1F
06/29 21:41, 1F
→
06/29 21:41,
5年前
, 2F
06/29 21:41, 2F
→
06/29 21:44,
5年前
, 3F
06/29 21:44, 3F
→
06/29 21:46,
5年前
, 4F
06/29 21:46, 4F
→
06/29 21:46,
5年前
, 5F
06/29 21:46, 5F
推
06/29 22:24,
5年前
, 6F
06/29 22:24, 6F
→
06/29 22:25,
5年前
, 7F
06/29 22:25, 7F
推
06/29 22:48,
5年前
, 8F
06/29 22:48, 8F
→
06/30 07:31,
5年前
, 9F
06/30 07:31, 9F
→
06/30 07:31,
5年前
, 10F
06/30 07:31, 10F
推
07/04 23:49,
5年前
, 11F
07/04 23:49, 11F
→
07/04 23:50,
5年前
, 12F
07/04 23:50, 12F
→
07/04 23:51,
5年前
, 13F
07/04 23:51, 13F
→
07/05 08:21,
5年前
, 14F
07/05 08:21, 14F
→
07/05 08:34,
5年前
, 15F
07/05 08:34, 15F
→
07/05 08:34,
5年前
, 16F
07/05 08:34, 16F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 4 篇):
4
16
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章