对于如下自定义结构体:
struct node
{
int data;
int pos;
node(int n = 0) : data(n), pos(0){};
node(const node &x) : data(x.data), pos(x.pos){};
friend bool operator<(node &l, node &r) { return l.data < r.data; };
};
如果拷贝构造函数使用:
node(node &x) : data(x.data), pos(x.pos){}; //未加const
则编译不通过,测试代码如下:
#includeusing namespace std; struct node { int data; int pos; node(int n = 0) : data(n), pos(0){}; node(const node &x) : data(x.data), pos(x.pos){}; //node(node &x) : data(x.data), pos(x.pos){}; friend bool operator<(node &l, node &r) { return l.data < r.data; }; }; int main() { int n; cin >> n; vector xc(n); for (int i = 0; i < n; ++i) { cin >> xc[i].data; xc[i].pos = i; } sort(xc.begin(), xc.end()); for (auto p : xc) cout << p.data << ' ' << p.pos << endl; }
各位有无知道原因的



