我知道要获取指向向量的第一个元素的指针,您可以执行以下操作:
&myvector[0];
//or
&myvector.front();
Run Code Online (Sandbox Code Playgroud)
我想使用上面的指针将其插入为的第一个参数qsort。问题是,当我这样做时:
qsort(graph->&edge[0], ..., ..., myComparatorFunction);
Run Code Online (Sandbox Code Playgroud)
我得到这个错误expected unqualified-id before '&' token。该graph指低于自制类的实例:
class Graph {
public:
int V, E;
vector<Edge> edge;
};
Run Code Online (Sandbox Code Playgroud)
实例使用以下方法创建:
Graph* createGraph(vector<Edge> edge) {
Graph* graph = new Graph;
graph->edge = edge;
return graph;
}
Run Code Online (Sandbox Code Playgroud)
在实现我想要的东西的同时如何摆脱错误?
您的语法错误。
像这样编写表达式:
graph->edge。graph->edge[0]。&graph->edge[0]。(这也可以graph->edge.data()使用vector自己的界面更直接地拼写。)
您graph->&edge[0]只是没有意义。
我也建议您不要这样做std::sort,qsort除非您知道出于某种原因需要后者。它是类型安全的,并且可能需要更多的“东西”(例如,捕获lambda和其他内联函子)。
并且,它将尝试成为最好的排序。同样的道理qsort(尽管有名字,表明它总是使用quicksort),但是std::sort最坏情况下的算法复杂度要比qsort允许的好。