Zef*_*niX 1 c++ vector elements
我正在尝试修改向量中的元素.在我更改数组中的某个块并再次显示它之后,它将不会显示新值,而是保留以前的输出.我做错了吗?
////////////////////////////////////////////////////
// This displays the array/maze
////////////////////////////////////////////////////
void displayMaze( vector< vector<char> > &maze ) {
for( int i = 0; i < ROW; i++ ) {
for( int j = 0; j < COL; j++ ) {
cout << "[" << maze[ i ][ j ] << "] ";
}
cout << endl;
}
}
////////////////////////////////////////////////////
// This is where I change a certain element
////////////////////////////////////////////////////
void updateMouse( vector< vector<char> > maze, const int &mouse_row, const int &mouse_col ) {
for( int row = 0; row < ROW; row++ ){
for( int col = 0; col < COL; col++ ) {
if( ( row == mouse_row ) && ( col == mouse_col ) ) {
maze[ row ][ col ] = 'M';
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
updateMouse按值获取maze参数.它对函数中的本地副本所做的任何更改都会在函数退出时被销毁.更改函数,以便通过引用获取参数.vectormaze
void updateMouse( vector<vector<char>>& maze, const int &mouse_row, const int &mouse_col ) {
// ^^^
Run Code Online (Sandbox Code Playgroud)
该updateMouse功能也可以简化为
void updateMouse( vector<vector<char>>& maze, int mouse_row, int mouse_col ) {
if(mouse_row < maze.size()) {
if(mouse_col < maze[mouse_row].size()) {
maze[mouse_row][mouse_col] = 'M';
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |