当我使用 begin()
和 在
迭代器 double
的 vector
上调用 sort
时end()sort
函数如何修改原始 vector
以包含排序后的值?
虽然迭代器只是表示一个值,但它们怎么会导致原始 vector
被修改?
vector<double> nums = {10.33, 20.44, 60.77};
sort(nums.begin(), nums.end(); // how does the original nums get changed?
最佳答案
迭代器不代表值,它代表容器、流或流缓冲区中的某个位置。本质上,它们是指针的概括。一些迭代器允许您使用间接 (*it
) 修改它们迭代的内容。
在最简单的情况下,它可能只是一个指针。考虑这段代码:
vector<double> nums = {10.33, 20.44, 60.77};
double* it = &nums[0]; //get the address of the first element
++it; //increment the pointer
*it = 42; //assign 42 to nums[1]
迭代器提供了很多相同的功能(取决于迭代器的类型)。
vector<double> nums = {10.33, 20.44, 60.77};
vector<double>::iterator it = nums.begin();//get an iterator to the first element
++it; //increment the iterator
*it = 42; //assign 42 to nums[1]
关于c++ - std::sort 如何修改支持类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35429845/