#include <bits/stdc++.h>
using namespace std;
#define vi vector<int>
#define vvi vector<vi>
int main() {
vi v(10, -1);
vvi vv(10, v);
for(int i=0; i<vv.size(); i++){
for(int j=0; j<vv[i].size(); j++){
cout << vv[i][j] << " ";
}
cout << endl;
}
}
當我編譯上述代碼聲明爲int矢量的矢量拋出,沒有錯誤報告和它運行良好(see this)。但是當我使用vector < vector < int>>
聲明一個向量爲int的向量時,會發生錯誤,因爲我沒有在右尖括號之間放置空格。那麼,爲什麼在#define
所做的所有vi
替換爲vector<int>
和vvi
以及vector< vector< int>>
?爲什麼沒有錯誤上使用的#define
預處理可與令牌流,並且兩個'>'是分開的令牌。 –