Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sparse sparse :: operator+ (const sparse& s) {
- sparse ans(this*);
- int sn = sizeof(s.xy) / (2 * sizeof(int));
- for (int i = 0; i < sn; ++i)
- ans[s.xy[i]] += s.A[i];
- int n = sizeof(ans.xy) / (2 * sizeof(int)), k = 0;
- for (int i = 0; i < n; ++i) {
- if (ans.A[i] == 0) {
- ++k;
- ans.xy[i] = ans.xy[n - 1 - k];
- ans.A[i] = ans.A[n - 1 - k];
- }
- }
- indices new_xy = new indices[n - k];
- double new_A = new double[n - k];
- for (int i = 0; i < n - k; ++i) {
- new_xy[i] = ans.xy[i];
- new_A[i] = ans.A[i];
- }
- delete[] ans.xy;
- delete[] ans.A;
- ans.xy = new_xy;
- ans.A = new_A;
- return ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement