小编use*_*655的帖子

重命名地图迭代器的第一个和第二个

有没有办法重命名map迭代器的第一个和第二个访问器函数.我知道他们有这些名称是因为代表键和值的底层对,但我希望迭代器更具可读性.我认为这可能是使用迭代器适配器,但我不知道如何实现它.

请注意,我不能使用提升.

我的意思是:

map<Vertex, Edge> adjacency_list;
for(map<Vertex, Edge>::iterator it = adjacency_list.begin();
    it != adjacency_list.end();
    ++it)
{
    Vertex v = it->first;
    //instead I would like to have it->vertex
}
Run Code Online (Sandbox Code Playgroud)

c++ iterator stl map

19
推荐指数
5
解决办法
8920
查看次数

Scala相当于C#的Expression API

它们是否与scala中的C#Expression API相当?

例如,我想要像这样的lambda:

(Foo) => Foo.bar
Run Code Online (Sandbox Code Playgroud)

并能够在传递给它的函数中访问"bar".

reflection scala

14
推荐指数
2
解决办法
1293
查看次数

在STL算法中使用struct成员

#include <iostream>
#include <vector>
#include <iterator>

using namespace std;

struct Point
{
    int x;
    int y;
    Point(int x, int y) :
        x(x),
        y(y)
    {}
};

int main()
{
    vector<Point> points;
    points.push_back(Point(1, 2));
    points.push_back(Point(4, 6));

    vector<int> xs;

    for(vector<Point>::iterator it = points.begin();
        it != points.end();
        ++it)
    {
        xs.push_back(it->x);
    }

    copy(xs.begin(), xs.end(), ostream_iterator<int>(cout, " "));
    cout << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何使用STL算法获得与上面的for循环相同的结果?我已经尝试过使用for_each的一些东西,但是无法让它工作.

c++ stl

1
推荐指数
1
解决办法
673
查看次数

标签 统计

c++ ×2

stl ×2

iterator ×1

map ×1

reflection ×1

scala ×1