- 1
Segmentation fault
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
Segmentation fault
Я против «неинформативных ошибок».
+2
case Type::Instruction:
{
if (o == "movzwl") return OpCode::movzwl;
if (o == "movzbl") return OpCode::movzbl;
if (o == "shrb") return OpCode::shrb;
if (o == "shrl") return OpCode::shrl;
if (o == "xorl") return OpCode::xorl;
if (o == "andl") return OpCode::andl;
if (o == "ret") return OpCode::ret;
if (o == "movb") return OpCode::movb;
if (o == "cmpb") return OpCode::cmpb;
if (o == "movl") return OpCode::movl;
if (o == "jmp") return OpCode::jmp;
if (o == "testb") return OpCode::testb;
if (o == "incl") return OpCode::incl;
if (o == "sarl") return OpCode::sarl;
if (o == "decl") return OpCode::decl;
if (o == "jne") return OpCode::jne;
if (o == "je") return OpCode::je;
if (o == "js") return OpCode::js;
if (o == "subl") return OpCode::subl;
if (o == "subb") return OpCode::subb;
if (o == "addl") return OpCode::addl;
if (o == "addb") return OpCode::addb;
if (o == "sall") return OpCode::sall;
if (o == "orl") return OpCode::orl;
if (o == "andb") return OpCode::andb;
if (o == "orb") return OpCode::orb;
if (o == "decb") return OpCode::decb;
if (o == "incb") return OpCode::incb;
if (o == "rep") return OpCode::rep;
if (o == "notb") return OpCode::notb;
if (o == "negb") return OpCode::negb;
if (o == "sbbb") return OpCode::sbbb;
if (o == "pushl") return OpCode::pushl;
if (o == "retl") return OpCode::retl;
}
Фрагмент транслятора из ассемблера в ассемблер.
https://github.com/lefticus/x86-to-6502
0
#include <iostream>
using namespace std;
struct Rooster {
int id = 0;
};
void asshole(const Rooster* roosters) {
Rooster* r = (Rooster*)roosters;
for (int i = 0; i < 3; i++) {
r[i].id = i + 1;
}
}
int main() {
Rooster roosters[3];
asshole(roosters);
for (int i = 0; i < 3; i++) {
printf("%d\n", roosters[i].id);
}
return 0;
}
https://ideone.com/Xk9Ukg
Нахуй так жить?
+1
QVariant AtdItem::data(int column, int role) const {
if (role == Qt::DisplayRole || role == Qt::EditRole || role == Qt::ToolTipRole) {
if (column == 0)
return m_name;
if (column == 1)
return m_id;
if (column == 2)
return m_shortName;
if (column == 3)
return m_code;
if (column == 4)
return m_code_alpha_2;
if (column == 5)
return m_capital;
if (column == 6)
return m_type_id;
if (column == 7)
return m_number;
if (column == 8)
return m_dir_id;
if (column == 9)
return m_area;
if (column == 10)
return m_pop;
if (column == 11)
return m_info;
if (column == 12)
return m_reduction_name;
if (column == 13)
return m_scheme_name;
if (column == 14)
return m_num_on_scheme;
if (column == 15)
return m_code_alpha3;
if (column == 16)
return m_code_hasc;
if (column == 17)
return m_level;
}
if (role == Qt::UserRole) {
return m_id;
}
return QVariant();
};
уроки по switch && enum будут после обеда
+4
// https://godbolt.org/z/PPAWM0
#include <embed>
#include <cstdint>
constexpr std::uint64_t val_64_const = 0xcbf29ce484222325u;
constexpr std::uint64_t prime_64_const = 0x100000001b3u;
inline constexpr std::uint64_t
hash_64_fnv1a_const(const char* const ptr, std::size_t ptr_size, const std::uint64_t value = val_64_const) noexcept {
return (ptr_size == 1)
? value :
hash_64_fnv1a_const(&ptr[1],
ptr_size - 1,
(value ^ static_cast<std::uint64_t>(static_cast<char>(*ptr))) * prime_64_const);
}
int main () {
constexpr std::span<const char> art_data = std::embed("/dev/urandom", 32);
constexpr std::uint64_t actual = hash_64_fnv1a_const(art_data.data(), art_data.size());
return static_cast<int>(actual);
}
Очередная дрисня http://open-std.org/JTC1/SC22/WG21/docs/papers/2018/p1040r0.html в крестоговне, теперь можно через std::embed прочитать какое-то говно и даже в constexpr с ним что-то делать, например считать хеш-сумму. Можно constexpr-компилятор сделать, который бы читал код через std::embed и через constexpr хуиту его обрабатывал и компилировал. Скажите им еще про миксины из D
+2
Дали тестовое задание.
Написать хеш таблицу с открытой адресацией. Главное качество, а не скорость, сказали.
Реализовал на C++.
Самая тягомотина - это тестирование многопоточности.
Есть операции:
find, equalRange, operator [] - тот же equalRange, но возвращает все найденные вхождения, insert, remove, extend, size, capacity.
И вот надо каждую относительно другой проверять.
Только это выходит (9 - 1)^2 тестов. Помимо остальных, уже реализованных.
у меня проверка на значения только в операциях поиска относительно вставки, то бишь, нашелся ли в многопоточном исполнении элемент, или нет.
относительно удаления проверять - это муторно, потому что после удаления на той же позиции встает соседняя пара, и это случайно, проверено
экспериментально.
Сойдет ли просто проверять время блокировки (shared_lock, и lock_guard)
каждого параллельного текущему потоку относительно времени блокировки\старта\окончания блокировки текущего?
кроме связки (access - insert)?
Тем более, что операции записи\чтения проверяются в немногопоточном исполнении?
0
#include "pch.h"
#include <iostream>
using namespace std;
struct _Point {
double x, y, z;
};
void setPoint(_Point &, double = 0, double = 0, double = 0);
void outPoint(const _Point &, char);
int main()
{
_Point A, B, C, D;
setPoint(A, 1, 5, 6.78);
setPoint(B);
setPoint(C, 8);
setPoint(D, 3, 4);
outPoint(A,'a');
outPoint(B,'b');
outPoint(C,'c');
outPoint(D,'d');
}
void setPoint(_Point &name, double a, double b, double c) {
name.x = a;
name.y = b;
name.z = c;
}
void outPoint(const _Point &name,char ch) {
cout <<ch<< "(" << name.x << ", " << name.y << ", " << name.z << ")\n";
}
+1
// reflection.h
template <class T>
QStringList getPropertyList(T)
{
const QMetaObject& metaObject = T::staticMetaObject;
...
return properties;
}
// Copy-pasted, the parameter now is T*
template <class T>
QStringList getPropertyList(T*)
{
const QMetaObject& metaObject = T::staticMetaObject;
...
return properties;
}
// In other headers
class IMessage
{
public:
virtual ~IMessage();
...
};
class File
: public IMessage
{
...
};
class Text
: public IMessage
{
...
};
// Usage of all this
QStringList p;
p << getPropertyList(File());
p << getPropertyList(Text());
p << getPropertyList(static_cast<IMessage*>(new File()));
Работаю с шаблонами и теку
0
//замена главной диагонали с n-м столбцом в матрице с менюшкой и печеньками
#include "pch.h"
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <ctime>
#include <iomanip>
using namespace std;
int a[100][100], n = 3;
void inputN();
void filling(int);
void manualfill(int);
void showmass(int);
void solving();
void menu();
int main()
{
setlocale(0, "rus");
menu();
srand(time(NULL));
return 0;
}
void inputN() {
system("cls");
cout << "Введите n = "; cin >> n;
if (n < 3) {
cout << "\nИспользован стандартный размер массива 3х3\n\n";
n = 3;
}
showmass(2);
cout << "\n\n";
system("pause");
}
void filling(int n) {
system("cls");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = rand() % 100 + 1;
}
}
showmass(3);
}
void manualfill(int n) {
system("cls");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf(" a[%d][%d] = ", i + 1, j + 1); cin >> a[i][j];
}
}
system("pause");
}
void showmass(int status) {
if (status == 2 or status == 3) cout << "\n\n";else system("cls");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << setw(5) << a[i][j];
}
cout << endl;
}
if (status==1 or status == 3)system("pause");
}
void solving() {
system("cls");
showmass(2);
int c = 0;
int stolb = 0;
cout << "\nКакой столбец меняем?\n>>"; cin >> stolb;
stolb--;
for (int i = 0; i < n; i++) {
c = a[i][i];
a[i][i] = a[i][stolb];
a[i][stolb] = c;
}
printf("\n\n----гл. диагональ меняется с %d столбцом----\n\n",stolb+1);
showmass(3);
for (int i = 0; i < n; i++) {
c = a[i][i];
a[i][i] = a[i][stolb];
a[i][stolb] = c;
}
}
void menu() {
system("cls");
int ch = 0;
while (true) {
cout << " МЕНЮ\n\n";
ъуъ
0
char (&getArray())[11] {
static char arr[] = "1234567890";
return arr;
}
Как вернуть массив из функции в C/C++
На самом деле нет: возвращается ссылка