當我有一個初始化的迭代器分配一個unintialized問題。以下代碼片段在使用Visual Studio 2010構建時會產生訪問衝突。在以前版本的Visual Studio中,代碼應該可以工作。訪問衝突分配未初始化的迭代器
#include <list>
int main() {
std::list<int> list;
std::list<int>::iterator it = list.begin();
std::list<int>::iterator jt;
it = jt; // crashes in VS 2010
}
這不會被認爲是有效的C++嗎?
我需要這個代碼來實現「光標」類,要麼無處點或列表中的某個特定元素。如果我沒有對容器的引用,還有什麼可以用作未初始化迭代器的值?
我不明白你要做什麼。你初始化'it'指向一個有效的東西,然後你立即用一個未定義的值覆蓋它? –
您的評論與您的代碼不匹配:您是否打算輸入jt = it;而不是在你的代碼?如果是這樣,那應該很好。 – kfmfe04
你不能使用'jt'做任何事情。你甚至不能交換這個東西:'std :: swap(it,jt)'將在VS2010上產生相同的錯誤。 – MSalters