Size: a a a

2020 May 20

B

Bogdan in rust_offtopic
такое добавили
источник

B

Bogdan in rust_offtopic
1) Inserts value_type(key, T()) if the key does not exist. This function is equivalent to return insert(std::make_pair(key, T())).first->second;


жестко

https://en.cppreference.com/w/cpp/container/map/operator_at
источник

B

Bogdan in rust_offtopic
в C# есть опетор индекстора
источник

Т8

Т-34 85 in rust_offtopic
Bogdan
в новом шарпе можно аовзращать реф


ref object GetFooRef()
а какоц юзкейс?
источник

B

Bogdan in rust_offtopic
public TValue this[TKey key] { get; set; }  ключевое тут set
источник

B

Bogdan in rust_offtopic
т.е. по факуу в шарпах индекстор это

set_Item(Tkey key, TValue value)
источник

B

Bogdan in rust_offtopic
Т-34 85
а какоц юзкейс?
чтобы List работал как массив, нарпимер


ну т.е. чтобы сделать можно было индекстор как в С++ для вектора по факту
источник

B

Bogdan in rust_offtopic
если у тебя струкутры лежат в списке, а не референс объекты


но насколько я знаю они только в язык добавили, но не в стандартные коллекции
источник

AB

Artöm Bakri Al-Sarmi... in rust_offtopic
Т-34 85
@das_3sz3tt как будет работать передача по значению объекта, конструктор копирования которого удалён? Чёт мне кажется, что будет ошибка компиляции
Будет
источник

AB

Artöm Bakri Al-Sarmi... in rust_offtopic
Bogdan
в C# есть опетор индекстора
В плюсах тоже, но он немного другой
источник

Т8

Т-34 85 in rust_offtopic
Artöm Bakri Al-Sarmini
Будет
@winnie_ua а, ну вот тогда почему operator[] возвращает ссылку, а не копию
источник

Т8

Т-34 85 in rust_offtopic
спасибо, Артёмка!
источник

AB

Artöm Bakri Al-Sarmi... in rust_offtopic
Он так сделан прежде всего для того, чтобы избежать копирования
источник

AB

Artöm Bakri Al-Sarmi... in rust_offtopic
Ну и для поддержки некопируемых типов
источник

Т8

Т-34 85 in rust_offtopic
Artöm Bakri Al-Sarmini
Он так сделан прежде всего для того, чтобы избежать копирования
ну, по идее, должен отрабатывать copy elision
источник

B

Bogdan in rust_offtopic
Т-34 85
ну, по идее, должен отрабатывать copy elision
видать должен — недостаточная гарантия)
источник

AB

Artöm Bakri Al-Sarmi... in rust_offtopic
Т-34 85
ну, по идее, должен отрабатывать copy elision
Не должен, vector::[] не создает объекты
источник

B

Bogdan in rust_offtopic
но это жестко что ты можешь взять значение и потом поменять вектор и получить UB
источник

B

Bogdan in rust_offtopic
а тут нислова о том что с референсом надо быть осторожным(
источник

AB

Artöm Bakri Al-Sarmi... in rust_offtopic
Bogdan
но это жестко что ты можешь взять значение и потом поменять вектор и получить UB
Кому надо, тот сделает копию
источник