我目前正在閱讀 Stanley B. Lippman、Josée Lajoie、Barbara E. Moo 所著的《C Primer 5th Addition》一書。在看書的時候,我遇到了一句話,
我們可以使用陣列來初始化向量。為此,我們指定要復制的第一個元素和最后一個元素的地址
用于解釋上述陳述句的代碼部分是,
int int_arr[] = {0, 1, 2, 3, 4, 5}; vector<int> ivec(begin(int_arr), end(int_arr));
在我的編譯器中使用以下代碼時,它會在開始和結束部分引發錯誤。錯誤如下,
rough1.cpp: In function 'int main()':
rough1.cpp:12:22: error: 'begin' was not declared in this scope
vector<int> ivec(begin(int_arr), end(int_arr));
^~~~~
我的問題是,
根據這本書,下面的代碼一定不會拋出錯誤,但在使用它時會拋出錯誤。我的編譯器有問題嗎?或者,它是一種不再使用的舊技術嗎?我應該怎么做才能從一個整數陣列初始化一個向量?
uj5u.com熱心網友回復:
begin并end在命名空間中定義std。所以你必須在那個命名空間的范圍內。這就是我們在寫作時所做的事情std::。
所以為了解決你的問題,
替換begin為std::begin。同樣替換end為std::end
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/413828.html
標籤:
