C ++ STL算法:获取容器中元素的指针

时间:2016-04-08 00:22:28

标签: c++ algorithm c++11 stl

我有一个函数,它将两个指针作为参数。

bool function(T* a, T* b);

一个容器(矢量)。

vector<T> vector;

我希望使用STL算法(for_each)将该函数应用于向量的元素。但是,我不知道元素的指针是否会在函数中自动作为参数。例如,

for_each(vector.begin(), vector.end(), function(/*something here?*/))

工作,或者我需要使用循环(C ++ 11的每个循环中的新增内容)?

2 个答案:

答案 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.