c+中是否有内置函数+;对于与java提供的indexOf函数类似的linkedlist? 我使用C++内置的“列表”,我需要找到一个值“目标”的索引,在java中有一个函数索引> ,解决了这个问题,C++中有什么类似的东西吗?

c+中是否有内置函数+;对于与java提供的indexOf函数类似的linkedlist? 我使用C++内置的“列表”,我需要找到一个值“目标”的索引,在java中有一个函数索引> ,解决了这个问题,C++中有什么类似的东西吗?,c++,list,linked-list,C++,List,Linked List,我尝试使用std::find(),但它返回的是“target”值本身,而不是索引?但我需要目标值的索引 问:给我一个目标值数组和一个列表,遍历目标数组,为每个元素在列表中找到它的索引并打印索引,然后从列表中删除目标值并将其推到前面 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-

我尝试使用
std::find()
,但它返回的是“target”值本身,而不是索引?但我需要目标值的索引

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

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
目标值[3,1,2,1],列表:1->2->3->4->5
对于i=0目标[0]=3,列表中的索引=2 1->2->4->5
对于i=1目标[1]=1,列表中的索引=1 3->2->4->5

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

例如:

#包括
#包括
使用名称空间std;
int main()
{
名单l{1,2,3,4,5};
对于(自动i:{3,1,2,1})
{
自动it=l.begin();
for(自动索引=1;it!=l.end();it++,index++)
{
如果(*it==i)
{

难道我在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;
列表ll;
int目标,x=0;
for(it=ll.begin();it!=ll.end();it++)
{
如果((*it)=目标)
{
打破
}
x++;
}

cout
std::distance(myList.begin(),std::find(myList.begin(),myList.end(),value))
有两个过程…std::list
中的索引很少有用,顺便说一句,(对于
std::vector
来说是有意义的,前面的注释仍然有效,但是
std::distance
不需要额外的过程:)“默认值”容器应该几乎总是
std::vector
。对于
std::vector
索引是有意义的,而对于链表则没有。请您的问题告诉我们您试图解决的原始问题是什么。为什么需要获取“索引”进入一个列表?现在这确实是一个非常重要的问题。这可以直接用迭代器来完成,不需要使用索引。(此外,如果重复交错的过程,迭代器将是正确的,而索引不会)我需要打印迭代器的索引,是否可以从您的代码中打印?更新以反映您的问题更新,现在包括打印。列表有节点而不是索引,因此它打印从节点1开始的节点(与索引0相反)。我们在这里做简单的线性搜索,我们能做得更好吗?列表搜索总是O(N),因为迭代器只能向前和向后递增。
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;