我已經宣布了我的二維陣列.但由于這個原因導致錯誤
vector <vector <int> > plain(vector <int>(4,0)) = {{23,43,45,56},
{67,85,13,59},
{48,23,9,57},
{24,52,90,12}};
rijndael.cpp:12:51: error: expected ‘,’ or ‘;’ before ‘=’ token
rijndael.cpp:57:1: error: expected ‘}’ at end of input
所有先前的半冒號都已正確分配.你能告訴我這個宣言中哪里出錯嗎?
我洗掉了建構式呼叫,現在我的宣告是
vector <vector <int> > plain/*(vector <int>(4,0))*/ = {{23,43,45,56},
{67,85,13,59},
{48,23,9,57},
{24,52,90,12}};
但現在的錯誤是
rijndael.cpp:15:19: error: in C++98 ‘plain’ must be initialized by constructor, not by ‘{...}’
rijndael.cpp:15:19: error: deducing from brace-enclosed initializer list requires #include <initializer_list>
rijndael.cpp:15:19: error: deducing from brace-enclosed initializer list requires #include <initializer_list>
rijndael.cpp:15:19: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
rijndael.cpp:15:19: error: could not convert ‘{{23, 43, 45, 56}, {67, 85, 13, 59}, {48, 23, 9, 57}, {24, 52, 90, 12}}’ to ‘std::vector<std::vector<int> >’
我該如何糾正這個?很感謝任何形式的幫助.
uj5u.com熱心網友回復:
你不能同時擁有建構式呼叫和串列初始化,堅持一個,例如:vector<vector<int>> plain{{23,43,45,56},
{67,85,13,59},
{48,23,9,57},
{24,52,90,12}};
(您可以省略= for串列初始化.)
在您的編輯:嗯,錯誤解釋了一切,閱讀它會有所幫助.您需要C 11模式進行串列初始化.如果您不想這樣做,則必須使用ctor進行復制以準備2D陣列,然后在構建后填寫.
uj5u.com熱心網友回復:
這個問題解決了嗎??轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/133820.html
標籤:其他技術討論專區
下一篇:python 牛頓法代碼
