Comments 13
Хм. Как-то сразу вспоминается Objective C с его категориями, позволяющими добавить метод к уже существующему классу.
0
Вы должны помнить, что эти новые строковые функции чувствительны к регистру. … вам все равно нужно будет реализовать это самостоятельно. Возможные реализации contains(), startwith() и endwith(), которые выполняют поиск без учета регистра, показаны ниже:
...return std::toupper(ch1) == std::toupper(ch2); });...
А еще стоит помнить, что std::toupper не работает с юникодом и реализовывать самостоятельно придется еще много чего.
Поэтому, видимо, и не добавляли — если проект хоть немного сложнее «hello, world», от велосипедостроения все равно никуда не деться.
+4
Надо было ещё добавить в C++11 или даже 98. Хорошо, что в Qt всегда было и остаётся гораздо удобнее.
+1
а потом люди пишут код а-ля:
if (m.contains(x))
m[x] = foo();
+2
Это задача компилятора понять что в обоих случаях используется один и тот же итератор и удалить второй вызов.
-1
в общем случае эти итераторы могут быть вычислены по-разному. И даже если бы мы могли гарантировать единообразность их вычисления, всё равно потребуется механизм чистых функций и весьма нетривиальный алгоритм решения этой задачи в общем случае.
0
На самом деле элиминация повторного доступа это весьма развитая оптимизация. Если добавить к этому то, что приведённый пример легче читается чем
и тот факт что в 99.9% случаев производительность этого куска особой роли не играет — я бы такой код на ревью пропустил.
auto ptr = m.find(x);
if(ptr != m.end())
*ptr = foo();
и тот факт что в 99.9% случаев производительность этого куска особой роли не играет — я бы такой код на ревью пропустил.
0
UFO just landed and posted this here
Еще покажите простую простую функцию для преобразования строки из utf8 в cp1251 и подобные.
И как заставить iostream правильно работать с русскими путями:
И как заставить iostream правильно работать с русскими путями:
std::ofstream out(std::filesystem::path(u8"у черта на рогах\\file.txt"));
0
if (m.count(key) > 0)
тоже вариант. работает и для set и для map.
0
Sign up to leave a comment.
Небольшие, но важные функции