gpt4 book ai didi

C++ 迭代列表和单个对象

转载 作者:搜寻专家 更新时间:2023-10-31 01:14:37 26 4
gpt4 key购买 nike

我有一个 STL 指针列表,以及另一个相同类型的指针。我需要对它们中的每一个执行大量操作。我当前的方法是将指针插入列表,遍历所有内容,然后将指针弹出。这工作正常,但它让我想知道是否有更优雅/更少 hacky 的方式来迭代事物的组合。 (假设我有一堆其他的东西要添加到迭代中)

当前的功能,但有点 hacky 的方式:

std::list<myStruct*> myList;
myStruct* otherObject;

//the list is populated and the object assigned

myList.push_back(otherObject);
for(std::list<myStruct*>::iterator iter = myList.begin(); iter != myList.end(); ++iter){

//Long list of operations

}

myList.pop_back(otherObject);

最佳答案

更惯用的方法可能是将“一长串操作”封装到一个函数中,然后根据需要调用它。例如:

void foo (myStruct* x)
{
// Perform long list of operations on x.
}

...

{
std::list<myStruct*> myList;
myStruct* otherObject;

// The list is populated and the object assigned.

foo (otherObject);
for(std::list<myStruct*>::iterator iter = myList.begin(); iter != myList.end(); ++iter)
{
foo(*iter);
}
}

然后,如果您稍后需要将 foo 应用于其他项目,只需根据需要调用即可。

虽然以您描述的方式将 otherObject 添加到 myList 本身并没有什么坏处,但它在某种程度上滥用了列表,应该尽可能避免。

关于C++ 迭代列表和单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11076386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com