STL算法和嵌套for循环

问题描述 投票:-3回答:1

所以我目前正在尝试更多地了解STL算法,并尝试在线搜索是否可以使用STL算法创建嵌套for循环,但是还没有得到我想要的答案。基本上,在OrderManager中,我有一个CustomerOrders类的向量,它包含一个订单数组。在ItemManager内部,它有一个当前可用的类Items的向量。我在下面的代码中尝试实现的是输出客户请求“不可用”的任何项目。正如您所看到的,我已经创建了一个嵌套的for循环,但最终,如果可能的话,我想通过STL算法实现这一点。

如果有什么事情有点混乱,或者我以某种方式错误地格式化了这个帖子,请告诉我。

void OrderManager::validate(const ItemManager& itemManager, std::ostream&  os)
{
    for (int i = 0; i < std::vector<CustomerOrder>::size(); i++)
    {
        for (int j = 0; j < std::vector<CustomerOrder>::at(i).noOrders(); j++)
        {
            for (int k = 0; k < itemManager.size(); i++)
            {
                    if (std::vector<CustomerOrder>::at(i)[j] == itemManager.at(k).getName())
                    {
                       break;
                    }
                    if (k == itemManager.size() - 1)
                    { 
                       os << std::vector<CustomerOrder>::at(i)[j] << " is unavailable." << std::endl; 
                    }
            }
        }
   }
}
c++ c++11
1个回答
0
投票

它可以用std :: for_each和lambdas来完成,但这对于这个操作来说似乎有些愚蠢,

std::for_each(orders.cbegin(), orders.cend(), [&ostrm] (CustomerOrder const & order) {
  std::vector<Item> const & noOrders = order.NoOrders();
  std::for_each(noOrders.cbegin(), noOrders.cend(), [&ostrm] (Item const & item) { ostrm << item; });
});
© www.soinside.com 2019 - 2024. All rights reserved.