linkedlist的c++中是否有类似于java提供的indexOf函数的内置函数



我使用的是内置的c++"列表";,我需要找到一个值"的索引;目标";,在java中有一个函数indexOf解决了这个问题,在c++中有类似的东西吗?

我尝试使用CCD_ 2,但它返回"0";目标";值本身而不是索引?但我需要目标值的索引。

问题:我得到了一个目标值数组和一个列表,遍历目标数组,对于每个元素,在列表中找到它的索引并打印索引,然后从列表中删除目标值并将其推送到的前面

target values [3,1,2,1] , list : 1->2->3->4->5
for i=0 target[0] = 3 , index in list = 2 <- print it
updated list  3->1->2->4->5
for i=1 target[1] = 1, index in list = 1 <- print it
updated list : 1->3->2->4->5

等等

std::list没有随机访问迭代器。您要查找的很可能是对象的迭代器。

例如,

#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> l{1, 2, 3, 4, 5};
for (auto i: {3, 1, 2, 1})
{
auto it = l.begin();
for (auto index = 1; it != l.end(); it++, index++)
{
if (*it == i)
{
cout << "n" << i << " is located at node " << index << endl;
l.splice(l.begin(), l, it);
cout << "Updated list: ";
for (auto i: l) { cout << i << " "; }
break;
}
}
}

return 0;
}

我在linkedlist上进行了线性搜索以查找目标,他们是否在时间复杂性方面进行了改进?

list<int> ll;
int target,x=0;
for (it = ll.begin(); it != ll.end(); it++)
{
if ((*it) == target)
{
break;
}
x++;
}
cout<<"found "<<target<<" at index"<<x<<endl;

最新更新