我正在尝试理解
中代码的一部分(*this).bond.assign(mck.bond.begin(), mck.bond.end())
我想了解begin()和end()命令的作用。我在不同的地方读到它是一个迭代器索引,但我无法理解它的含义。我尝试通过编写一个简短的代码来理解它,但它无法正常工作。有人可以帮我理解上面的代码行以及begin()和end()命令的作用。
int main()
{
vector<int> vec_name;
vec_name.push_back(10);
vec_name.push_back(20);
vec_name.push_back(30);
vec_name.push_back(40);
cout << vec_name.size() <<endl;
cout << vec_name.begin() <<endl;
}
答案 0 :(得分:1)
.begin()
返回迭代器,而不是元素或对元素的引用。它与打印vec_name[i]
或使用返回引用的vec_name::front()
不同。因此,要打印返回的值,需要声明一个接收返回值vec_name.begin()
的迭代器,然后打印迭代器。
**编辑:** 使用您的示例代码,它将是这样的:
int main()
{
vector<int> vec_name;
vector<int>::iterator it;
vec_name.push_back(10);
vec_name.push_back(20);
vec_name.push_back(30);
vec_name.push_back(40);
cout << vec_name.size() <<endl;
//cout << vec_name.begin() <<endl; //cannot print iterators directly
it = vec_name.begin(); //Pass return value to iterator.
cout << *it << endl; //Print dereferenced iterator
}