C++中的许多内置函数将指针返回到内存中的位置,该位置给出所需数字的地址,但与计算值容器中的实际索引无关。例如。为了找到代码中的最大元素,我们使用std :: max_element(),它返回内存中的地址,而不是所需元素的索引。
// C++ code to demonstrate return value of
// max_element()
#include
using namespace std;
int main()
{
// initializing vector
vector vi = { 1, 4, 5, 6, 3 };
// printing max element
cout << "The max element is : "
<< (*max_element(vi.begin(), vi.end()));
// printing position
// prints position in memory
cout << "\not_eqThe position of maximum element is : ";
printf("%d", max_element(vi.begin(), vi.end()));
}
输出:
The max element is : 6
The position of maximum element is : 9583660
需要有一种方法来计算指定容器中所需元素位置的精确索引。本文已经讨论了这些方法。
减去第一个迭代器
在此方法中,我们只减去容器的开始指针,如果是向量,则其“ begin() ”迭代器指向容器的第一个元素的地址,减去该值即可得到所需值wrt的精确索引容器。
// C++ code to demonstrate ways to print exact
// position by subtracting 1st address
#include
using namespace std;
int main()
{
// initializing vector
vector vi = { 1, 4, 5, 6, 3 };
// printing max element
cout << "The max element is : "
<< (*max_element(vi.begin(), vi.end()));
// printing position
// prints wanted position
cout << "\nThe position of maximum element is : ";
printf("%d", max_element(vi.begin(),
vi.end()) - vi.begin());
return 0;
}
输出:
The max element is : 6
The position of maximum element is : 3
使用std :: distance()
通过将第一个迭代器作为第一个参数,并将期望的位置作为第二个参数,使用distance()也是计算所需位置的另一种方法。
// C++ code to demonstrate ways to print exact
// position using distance()
#include
using namespace std;
int main()
{
// initializing vector
vector vi = { 1, 4, 5, 6, 3 };
// printing max element
cout << "The max element is : "
<< (*max_element(vi.begin(), vi.end()));
// printing position
// prints wanted position
cout << "\nThe position of maximum element is : ";
printf("%d", distance(vi.begin(),
max_element(vi.begin(), vi.end())));
return 0;
}
输出:
The max element is : 6
The position of maximum element is : 3
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。