有两个向量:索引向量包含我们想要从dataHolder中获取的索引
std::vector<int> indices{ 2, 3, 7 };
dataHolder向量保存数据项。可以是任何大小
std::vector<std::wstring> dataHolder{ L"10 kz", L" 20 khz", L"100 khz", L"1 hz", L"5 hz" };
从dataHolder向量获取结果向量
Example : resultvector{L"100 khz", L"1 hz"}
使用2个周期编写这样的算法没有问题。
使用std :: transform是否有解决方案?
可能涉及的人:
当前实现
#include "pch.h"
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> indices{ 2, 3, 7 };
std::vector<std::wstring> dataHolder{ L"10 kz", L" 20 khz", L"100 khz", L"1 hz", L"5 hz" };
std::vector<std::wstring> result;
for (int index = 0; index < dataHolder.size(); index++)
{
if (std::any_of(indices.begin(), indices.end(), [&](int dataVal) { return index == dataVal; }))
result.push_back(dataHolder.at(index));
}
}
我认为这具有二次复杂度。所以我正在寻找与std :: transform的建议。如果有帮助!
可以用std::transform
完成,但必须返回一个值。
[根据我所看到的,您需要做的是迭代indices
向量,并将dataHolder
向量中的相应元素添加到result
。