mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
std.ArrayList: swapRemove set removed element to undefined (#25514)
This commit is contained in:
parent
95242cc431
commit
87c18945c2
@ -277,14 +277,13 @@ pub fn AlignedManaged(comptime T: type, comptime alignment: ?mem.Alignment) type
|
||||
/// The empty slot is filled from the end of the list.
|
||||
/// This operation is O(1).
|
||||
/// This may not preserve item order. Use `orderedRemove` if you need to preserve order.
|
||||
/// Asserts that the list is not empty.
|
||||
/// Asserts that the index is in bounds.
|
||||
pub fn swapRemove(self: *Self, i: usize) T {
|
||||
if (self.items.len - 1 == i) return self.pop().?;
|
||||
|
||||
const old_item = self.items[i];
|
||||
self.items[i] = self.pop().?;
|
||||
return old_item;
|
||||
const val = self.items[i];
|
||||
self.items[i] = self.items[self.items.len - 1];
|
||||
self.items[self.items.len - 1] = undefined;
|
||||
self.items.len -= 1;
|
||||
return val;
|
||||
}
|
||||
|
||||
/// Append the slice of items to the list. Allocates more
|
||||
@ -522,6 +521,7 @@ pub fn AlignedManaged(comptime T: type, comptime alignment: ?mem.Alignment) type
|
||||
pub fn pop(self: *Self) ?T {
|
||||
if (self.items.len == 0) return null;
|
||||
const val = self.items[self.items.len - 1];
|
||||
self.items[self.items.len - 1] = undefined;
|
||||
self.items.len -= 1;
|
||||
return val;
|
||||
}
|
||||
@ -544,8 +544,7 @@ pub fn AlignedManaged(comptime T: type, comptime alignment: ?mem.Alignment) type
|
||||
/// Returns the last element from the list.
|
||||
/// Asserts that the list is not empty.
|
||||
pub fn getLast(self: Self) T {
|
||||
const val = self.items[self.items.len - 1];
|
||||
return val;
|
||||
return self.items[self.items.len - 1];
|
||||
}
|
||||
|
||||
/// Returns the last element from the list, or `null` if list is empty.
|
||||
@ -956,14 +955,13 @@ pub fn Aligned(comptime T: type, comptime alignment: ?mem.Alignment) type {
|
||||
/// The empty slot is filled from the end of the list.
|
||||
/// Invalidates pointers to last element.
|
||||
/// This operation is O(1).
|
||||
/// Asserts that the list is not empty.
|
||||
/// Asserts that the index is in bounds.
|
||||
pub fn swapRemove(self: *Self, i: usize) T {
|
||||
if (self.items.len - 1 == i) return self.pop().?;
|
||||
|
||||
const old_item = self.items[i];
|
||||
self.items[i] = self.pop().?;
|
||||
return old_item;
|
||||
const val = self.items[i];
|
||||
self.items[i] = self.items[self.items.len - 1];
|
||||
self.items[self.items.len - 1] = undefined;
|
||||
self.items.len -= 1;
|
||||
return val;
|
||||
}
|
||||
|
||||
/// Append the slice of items to the list. Allocates more
|
||||
@ -1327,6 +1325,7 @@ pub fn Aligned(comptime T: type, comptime alignment: ?mem.Alignment) type {
|
||||
pub fn pop(self: *Self) ?T {
|
||||
if (self.items.len == 0) return null;
|
||||
const val = self.items[self.items.len - 1];
|
||||
self.items[self.items.len - 1] = undefined;
|
||||
self.items.len -= 1;
|
||||
return val;
|
||||
}
|
||||
@ -1348,8 +1347,7 @@ pub fn Aligned(comptime T: type, comptime alignment: ?mem.Alignment) type {
|
||||
/// Return the last element from the list.
|
||||
/// Asserts that the list is not empty.
|
||||
pub fn getLast(self: Self) T {
|
||||
const val = self.items[self.items.len - 1];
|
||||
return val;
|
||||
return self.items[self.items.len - 1];
|
||||
}
|
||||
|
||||
/// Return the last element from the list, or
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user