Linked List iterating over and inserting an element around (before/after) the current position.
    Josh 
    foo at bar.com
       
    Sun May 19 20:55:28 UTC 2019
    
    
  
Just started looking at D this weekend, coming from a 
C++/Java/Go/Rust background and it's really not going well.  
Trying to write something to play with the language and need a 
linked list, looking in std.container you have a single or doubly 
linked list...great.
Now how to I iterate over it and look for a value and then modify 
it, and maybe insert a new element before or after that 
element.....After spending way to long on the API realized I need 
to be looking at std.range (I think, maybe not, I'm not sure).
So off to the std.range documentation, which recommended reading 
http://ddili.org/ders/d.en/ranges.html, okay read that, boy if I 
want to display the contents of range I'm ALL set, to bad I would 
like to modify a list, so I seem to be no closer to my goal....oh 
and by the way if you think:
import std.stdio;
import std.range;
void main() {
     int[] slice = [ 1, 2, 3 ];
     int[] slice2 = slice;
     put(slice2, 100);
     writeln(slice2);
     writeln(slice);
}
Resulting in:
[2, 3]
[100, 2, 3]    ← expected result
Is obvious, I have some bad news for you.
Now I'm thinking maybe std.algorithm.comparison, maybe iteration 
or maybe mutation seems promising, at least that's what I want to 
do, mutate a list....hey there is a swap...oh it doesn't deal 
with ranges...
Maybe swapAt but that sounds like I need an index, and indexes 
with linked list don't really perform well...but it does take a 
range....okay I think that is what I need, so in a foreach loop, 
looking at https://tour.dlang.org/tour/en/basics/ranges I would 
call swapAt and pass in __rangeCopy, I think I can update, happy 
days, now to figure out how to add something before or after that 
element......
So in short I guess my complaint is that you show all this stuff 
about displaying ranges and removing items from the front or 
end...so if I want a queue we're set, but nothing about modifying 
them...unless it's so blatantly obvious I'm just missing it, 
which could be the case.
    
    
More information about the Digitalmars-d-learn
mailing list