I have a vector of tuples, where each tuple represents a position in a 2d array.

I also have a 2d array of values

For example:

```
# create a vector of tuples
tupl1 = ((1,1), (2,3), (1,2), (3,1))
# create a 2d array of values
m1 = zeros(Int, (3,3))
m1[1:4] .= 1
```

I want to get all the values in the 2d array at each of the tuple positions. I thought the following might work:

```
m1[tupl1]
```

But this gives in invalid index error. Expected output would be:

```
4-element Vector{Int64}:
1
0
1
1
```

Any advice would be much appreciated.

### >Solution :

One way to do this could be:

```
julia> [m1[t...] for t in tupl1]
4-element Vector{Int64}:
1
0
1
1
```

More verbose but faster with lesser number of allocations would be via `CartesianIndex`

:

```
julia> getindex.(Ref(m1), CartesianIndex.(tupl1))
(1, 0, 1, 1)
```

A benchmark:

```
julia> @btime [$m1[t...] for t in $tupl1];
24.900 ns (1 allocation: 96 bytes)
julia> @btime getindex.(Ref($m1), CartesianIndex.($tupl1));
9.319 ns (1 allocation: 16 bytes)
```