我有一个函数,它将两个指针作为参数。
bool function(T* a, T* b);
一个容器(矢量)。
vector<T> vector;
我希望使用STL算法(for_each)将该函数应用于向量的元素。但是,我不知道元素的指针是否会在函数中自动作为参数。例如,
for_each(vector.begin(), vector.end(), function(/*something here?*/))
工作,或者我需要使用循环(C ++ 11的每个循环中的新增内容)?
答案 0 :(得分:3)
至少有两个原因,您不能将std :: for_each()与vector<T> v;
for(size_t i(0); i < v.size()-1; ++i)
{
function(&v[i], &v[i+1]);
}
一起使用:
function
将单个参数传递给lamba,您的std::for_each
()接受两个参数。
function
传递对容器的每个成员的引用,而不是指针。
答案 1 :(得分:1)
尝试使用普通for循环来解决此问题。
<ListView x:Name="list_User_Events" Background="{StaticResource BorderDarkGreen}" Foreground="White" BorderThickness="0" BorderBrush="{x:Null}" SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn Width="100" Header="Name" DisplayMemberBinding="{Binding Name}"></GridViewColumn>
<GridViewColumn Width="50" Header="Interval" DisplayMemberBinding="{Binding Interval}"></GridViewColumn>
<GridViewColumn Width="160" Header="Type" DisplayMemberBinding="{Binding EventType}"></GridViewColumn>
<GridViewColumn Header="Command" DisplayMemberBinding="{Binding Command}"></GridViewColumn>
<GridViewColumn Header="Action">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button x:Name="btn_list_user_Event_Delete" Click="btn_list_user_Event_Delete_Click">Delete</Button>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
这将把值作为地址传递给v的元素i和i + 1,类型为T.