vector/string以及範圍for迴圈
阿新 • • 發佈:2018-11-06
#include <iostream> #include <vector>//必須包含vector的標頭檔案;就如當用到string時也應該有#include<string>一樣; using namespace std; int main() { vector<int> v = { 0,1,2,3,4,5,6,7,8,9 }; for (auto &r : v)//要改變v中的值,必須用引用型別; r *= 2; for (auto i : v)//因為只是輸出並不打算改變v中的值,所以不是引用; { cout << i << " ";當然這裡也可以像下面一樣用個普通的for迴圈然後用解引用(如下面的*e)輸出; } cout <<endl<< "常規for語句:"<<endl; for (auto beg = v.begin(), end = v.end(); beg != end; ++beg) { auto &b = *beg; b *= 3; } for (auto e = v.begin(); e != v.end(); ++e) cout << *e << " "; return 0;
範圍for用於陣列時:(對於多維陣列,應該理解為陣列的陣列...重點是理解各自陣列內的"元素"到底是陣列還是其他的基本型別)
#include <iostream> using namespace std; int main() { constexpr size_t rowCnt = 3, colCnt = 4; int ia[rowCnt][colCnt]; for (size_t i = 0; i != rowCnt; ++i)//外層陣列,當然它的3個元素自然就是內層陣列; { for (size_t j = 0; j != colCnt; ++j)//內層陣列,它的元素是4個整數; { ia[i][j] = i*colCnt + j; cout << ia[i][j]<< " "; } cout << endl; } size_t cnt = 0; for(auto &row:ia)//第一個必須引用,不然外層陣列的元素會被編譯器自動轉換成指向該陣列內首元素的指標!詳見C++ primer P114 for (auto &col : row) { col = cnt; ++cnt; } for (auto p = begin(ia); p != end(ia); ++p) { for (auto q = begin(*p); q != end(*p); ++q) { cout << *q << " "; } cout << endl; } return 0; }
}