在C+中使用类似lambda的语法搜索结构列表+; struct数据 { int-Id; 向量数据 } 标准::矢量数据列表=。。。。 int-wantedIndex=11; std::find(dataList.begin(),dataList.end(),“where dataList.Id==wantedIndex”) 这种Visual Studio 2008中的标准C++中的语法是否可能? < P> C++ 11附带LAMBDAS: struct Data { int Id; std::vector<int> SomeData } std::vector<Data> dataList = .... int wantedIndex = 11; std::find(dataList.begin(), dataList.end(), "where dataList.Id == wantedIndex")
C++11附带了对lambdas的支持:在C+中使用类似lambda的语法搜索结构列表+; struct数据 { int-Id; 向量数据 } 标准::矢量数据列表=。。。。 int-wantedIndex=11; std::find(dataList.begin(),dataList.end(),“where dataList.Id==wantedIndex”) 这种Visual Studio 2008中的标准C++中的语法是否可能? < P> C++ 11附带LAMBDAS: struct Data { int Id; std::vector<int> SomeData } std::vector<Data> dataList = .... int wantedIndex = 11; std::find(dataList.begin(), dataList.end(), "where dataList.Id == wantedIndex"),c++,search,lambda,C++,Search,Lambda,C++11附带了对lambdas的支持: struct Data { int Id; std::vector<int> SomeData } std::vector<Data> dataList = .... int wantedIndex = 11; std::find(dataList.begin(), dataList.end(), "where dataList.Id == wantedIndex") 如果你有VisualStudio2008,那么我想你不能
struct Data
{
int Id;
std::vector<int> SomeData
}
std::vector<Data> dataList = ....
int wantedIndex = 11;
std::find(dataList.begin(), dataList.end(), "where dataList.Id == wantedIndex")
如果你有VisualStudio2008,那么我想你不能使用lambda函数 正确的方法如下:
std::find_if(dataList.begin(), dataList.end(),
[&wantedIndex](const Data& x) { return x.Id == wantedIndex;});
如果你有VisualStudio2008,那么我想你不能使用lambda函数 正确的方法如下:
std::find_if(dataList.begin(), dataList.end(),
[&wantedIndex](const Data& x) { return x.Id == wantedIndex;});
如果你不能使用C++11。也许你可以用boost 是这样的:
bool find_fun1(int i, int wanted_index)
{
return i == wanted_index
}
int wanted_index = 11;
std::find_if(dataList.begin(), dataList.end(), std::bind(find_fun1,_1,wanted_index));
如果你不能使用C++11。也许你可以用boost 是这样的:
bool find_fun1(int i, int wanted_index)
{
return i == wanted_index
}
int wanted_index = 11;
std::find_if(dataList.begin(), dataList.end(), std::bind(find_fun1,_1,wanted_index));
我忘了提到,但我一直在使用visual studio 2008,虽然这不是问题的最佳答案,但它确实很好地回答了文章的标题,因此如果有人搜索相同的内容,可能会很有用。@user1038502如果更适合,我可以使用boost::lamdba/phoenix和functor制作一些东西。刚才看到了需求的变化。我的项目没有boost,虽然它会很有趣,但对我没有帮助。我忘了提到,但我一直在使用visual studio 2008虽然不是这个问题的最佳答案,但它确实很好地回答了帖子的标题,因此,如果有人搜索相同的内容,可能会很有用。@user1038502如果更适合,我可以使用boost::lamdba/phoenix和一个functor来制作一些东西。刚才看到了需求的变化。我的项目没有boost,虽然它会很有趣,但它对我没有帮助。
find
采用了一个值,而不是谓词。如果我认为是,正如这里提到的,我删除了我的评论,对不起,如果VS 2008中有可用的find\u,您是正确的。find
接受一个值而不是谓词。如果我认为是,我打算写find\u,正如我在这里提到的,我删除了我的评论,对不起,如果VS 2008中有可用的find\u,您是正确的。您可以使用映射从id到向量吗?另外,需要注意的是,数据和数据列表都是可怕的名称。您可以使用从id到向量的映射吗?另外,需要注意的是,数据和数据列表都是可怕的名称。