Danil
госты это прикольно, а у меня маленький и простой формат
Maksim
Добрый вечер. Есть код https://wandbox.org/permlink/4ebMPeiyxMdqzahD . На последнем MSVC выдаёт No, на GCC 7.2.0 Yes. Кто прав и как поправить, чтобы везде было Yes?
Anonymous
Philipp
Ребят, а тут можно совсем нубские вопросы задавать? Как правильно конкатенировать строки в С++ аналогично питоновскому %s?
Anonymous
@supapro
Aidar
Aidar
Иерархии лучше
Aidar
Если сделаешь Кей велью с иерархиями тогда норм
Aidar
Но тут прикол возникает в том что тебе всю экосистему надо перестраивать начиная от силибы
Aidar
Кстати не вижу разницы между ключ-значение и фс, где фактически ключ это путь
Matwey
Matwey
У ФС нет вторичных индексов
Matwey
Про которые ты не прочитал
Matwey
Со вторичными индексами иерархия делается легко
Aidar
Aidar
Может ФС ещё и дерево?
分解物質
современные фс представляют из себя направленный граф
Aidar
Я даже не знаю ни одну ФС тру дерево
Aidar
Matwey
Уверен?
mkdir -p a b/b1 c
touch a/1 b/2 b/b1/3 c/4
setfattr -n user.k -v 1 a/1
setfattr -n user.k -v 3 b/2
setfattr -n user.k -v 2 b/b1/3
setfattr -n user.k -v 1 c/4
Как мне найти все файлы с user.k >= 2 не сканируя всю ФС?
Matwey
Я, может, чего-то не знаю. Просто спрашиваю
Matwey
Ну пусть даже и сделаю. А содержимое директории гарантированно возвращается в каком-то порядке? Вообще говоря нет. Мне потом придется прочитать список всех объектов имеющих ключ и потом их фильтровать или сортировать в памяти.
Aidar
🦥Alex Fails
Square
usernameak
жир32
Не скажу, что это дерево
usernameak
За исключением директормй
Berkus
Berkus
Berkus
а вот на иерархическую фс такие индексы фиг натянешь без ЖЫРНОГО оверхеда
Berkus
Maksim
Anonymous
Приветствую, граждане!
Anonymous
Есть кто ?
Anonymous
Подскажите, каков смысл такой записи кода: *&Ptr или &*Ptr ? Я этот пример встретил в книжке
Square
Berkus
Anonymous
По отдельности смысл каждой операции знаешь?
Ну вообще-то как я понял из примера в книжке, то это отображает адрес той переменной, на которую указывает указатель. Так или нет ? В книжке не даны комментарии по поводу такого вида нотации.
Matwey
&x - взять указатель на переменную
Matwey
*p - взять значение из указателя
Matwey
*&x тоже самое что просто x
Anonymous
Погодите. Это я и так знаю. Но как это относится к моему вопросу ? Если запустить программу с таким кодом, как я привел. То прога выдает один и тот же адрес. Тогда какова ее смысловая нагрузка такой записи ? Что это дает ?
Matwey
такая же как у [] () {} ()
Matway
Anonymous
чисэс.
Anonymous
Ладно. Со временем я думаю такие пробелы восполняться.
Nik
Anonymous
я имею в виду сам указатель. Я без этих указателей смогу в функцию передать либо по значению либо по ссылке на это значение. Зачем указатель??
Matway
Nik
Массив тоже передашь?
Nik
И динамические объекты...
Anonymous
массив легко передается в функцию. Сам массив является его указателем. Точнее его 1-й элемент
Anonymous
В книгах пишется что это очень большие возможности сулит использование указателей, но я вижу что это только запутывает и добавляет страниц в книге
Nik
Anonymous
分解物質
Anonymous
Ну я до динамических объектов еще не дошел по изучению. А массивы на легке работают с простыми ссылками на значение.
Artemiy
Artemiy
И наверное все же лучше сюда переместиться
Anonymous
Простыми ссылками на что?
Переменную в функцию можно передать и по ссылке и по значение, точно также как и имя массива указываешь в аргументе, его первый элемент и является указателем так сказать. Про масссивы это шляпа - не убедили
Artemiy
Давай в @supapro продолжим
Anonymous
Я так понимаю что плюсы просто порождены С, а там нет ссылки. Вот и все.
Anatoly
Anonymous
Anatoly
Ясно
массив - это недообъект, поскольку его нельзя скопировать. массив может быть приведен к указателю на его первый элемент, но обратное неверно, что указатель - это массив. это тоже ясно?
Anatoly
Anatoly
Anonymous
Artemiy
Про указатели можно так ещё: мы так или иначе работаем с памятью. В С++ взаимодействие с этой памятью не скрыто под капотом, а для того, чтобы к этой памяти (почти напрямую) обращаться, нужны указатели. Ссылки чуть более высокий уровень занимают и представляют собой возможность создать alias для переменной, условно говоря та же переменная, но с другим именем. Во многих случаях с указателями в С++ тебе напрямую не придется работать, используя для этого smart_ptr-ы, vector-ы вместо массивов и т.п.
С указателями уже познакомишься, если попробуешь написать свои аллокаторы и менеджер памяти или те же smart-ptr-ы реализовать
John
ConfiG
John Connor, я тебя увидел в группе Qt.
Anonymous
Egor
не могу разобраться с аллокацией памяти под лямбду (чистый си)
struct test {
int a;
int b;
void (*c)();
};
struct test* ctTest() {
struct test* self = malloc(sizeof(struct test));
printf("start %x\n", self);
self->a = 2;
self->b = 3;
void* (*c)() = malloc(sizeof(void*));
printf("c add %x\n", c);
c = lambda(void, () {
printf("lalal");
});
printf("c add %x\n", c);
self->c = c;
return self;
}
struct test* d = ctTest();
struct test* e = ctTest();
вот лог примерный
start c85f28
c add c85f40
c add 61fe5e
---
start c85f50
c add c85f68
c add 61fe5e
в конце концов адрес для двух структур становится одинаковым
чяднт?
Berkus
void* (*c)() = malloc(sizeof(void)); шта прости?