c++ - std::sort 如何修改支持类型?

标签 c++ sorting vector iterator

当我使用 begin()doublevector 上调用 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/

相关文章:

c++ - 无限 while 循环使 WinAPI 崩溃

java - 排序和重新排列(不同的)数组

c++ - 通过 atomic::load() 访问 vector 时发生访问冲突

java - 将数据库值加载到 Vector

C++所有质数函数都不起作用

c++ - 可以从用户那里检索输入并运行另一个进程吗?

c++ - pcl 使用共享指针,它会复制吗?

c# - 书籍索引的序列和 Rangify 列表

java - 我如何告诉快速排序算法它应该终止?

c++ - 具有固定维度和值的 vector (C++)