Mirki z #cpp

Mam dlugi vector danych. Dziele go na kawalki i procesuje na osobnym korzystajac z std::launch::async. Nie ma data dependencies. Jezeli kawalkow jest 1000 to 1000 threadow zostanie odpalonych. Pytanie, czy moge zaufac schedulerowi, ze to jakos ogarnie, czy lepiej napisac semafor taki jak tu: https://www.reddit.com/r/cpp_questions/comments/5ih1g8/how_do_i_limit_the_number_of_threads_used_by/ i ograniczyc liczbe watkow do liczny rdzeni cpu? Martwie sie o to ze wzgledu na context switching.

  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@erwit: Najlepiej użyć sensownej biblioteki. Programowanie na wątkach nie jest proste i bardzo łatwo o trudny do wykrycia błąd. Jeśli nie Boost, to może TBB albo przynajmniej OpenMP? W icc and gcc dostępny domyślnie, w clang też już powinien być standardowo.

Niestety, ale obecnie algorytmy w C++17 są mocno ograniczone i trudno określić liczbę wątków lub chunk size.
  • Odpowiedz
@Metoksyfenidyna9: Po prostu robisz to new w innym wątku niż ten, w którym stworzyłeś this, którego przekazujesz jako rodzic do QSqlTableModel. Ponieważ QObject potrzebuje być na jakiś wątku, by odbierać zakolejkowane sygnały, przypisuje mu się obecne. Jednak ze względu na sposób usuwania dzieci rodziców, wątek rodzica musi być taki sam. U ciebie widocznie okno tworzysz w innym wątku niż główny wątek GUI.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
Dlaczego w c++ gdy dodamy do jakiejs liczby do potegi "e" np. 1. 23456e25 jakąś liczbe np. 1 to ona nie zmienia wartości tylko dalej wypisuje to samo?
#cpp #programowanie
  • 21
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

zna ktoś może odpowiednik javowego ForkJoinPool w c++? Chodzi mi o pulę wątków używającą work stealingu jednocześnie posiadającą jakieś mechanizmy uniemożliwiające wiecznie spinowanie, gdy nie ma tasków. Jedyne co znalazłem to Intel TBB, ale tego wolałbym nie używać.

#cpp
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Siema wszystkim spod tagów #programowanie w #cpp! Tutaj Marcin. Mam dla Was drobne #oswiadczenie związane z serią #sfmlowezabawy ( ͡° ʖ̯ ͡°)

Startując projekt "SFML-owe zabawy", nie pomyślałem o tym, że będę bazował na cudzej pracy - głównie myślałem o tym, że chcę zrobić coś dla funu i przy okazji pożytecznego. Cieszy mnie to, że tak wielu osobom spodobała się cała seria.
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Ktoś mi wytłumaczy dlaczego jak wcześniej przeciążałem operator konwersji z mojej klasy na stringa, wszystko działało xD i kompilator nie miał nic przeciwko, a teraz po kilku godzinach nagle wywala mi komunikat :
_**"ambigous conversion for C-style cast from 'String' to 'std::__cxxx..."**

String to moja własna klasa będąca mniej czy więcej odwzorowaniem klasy string z biblioteki.
W klasie mam napisaną metodę przeciążającą operator konwersji ( jawny operator konwersji do std::string):

explicit
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mam dwa projekty w Visual Studio: właściwa aplikacja i projekt z unit testami. W projekcie Tests zrobiłem referencję do tego drugiego projektu (PPM na "References" i zaznaczyłęm projekt "Aplikacja"), następnie w pliku z testami zrobiłem referencję do pliku nagłówkowego testowanej klasy, w ten sposób:

#include "../Aplikacja/Table.h"
Plik Table.h wygląda tak:

#pragma once
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jak będzie wyglądała pętla która policzy nam sumę liczb naturalnych od 0, i ta suma ma być mniejsza od podanej liczby na początku? np
podajemy na poczatku 5 i ma dodac sie do siebie 1 + 2 dając wynik 3.
#cpp #programowanie #programista15k
  • 37
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

tylko nie wiem jak rozwiązać problem rozmiaru tego tekstu, który został z inputa wczytany


@OstryKepucz: skąd pomysł że został już wczytany w całości? Możesz czytać sobie plik po znaku używając std::istream::get i zapominając o wszystkich buforach po drodze każdy kolejny znak jest czytany z dysku
  • Odpowiedz
Ehh no chyba upośledzony jakiś jestem bo bardzo ciężko mi zrozumieć sygnały/sloty w QT. Znacie jakieś przykłady wysyłania struktur przez ten mechanizm?
W jaki sposób mogę wyświetlić w Qt bazę w TableView? Chodzi mi konkretnie o załadowanie całej bazy do TableView po wciśnięciu buttona pod którym mam całą operację połączenia się z bazą danych.
Nie wiem jak "wysłać" te dane z klasy "database" gdzie operuję połączeniem do klasy "MainWindow" gdzie mam tabelkę
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Metoksyfenidyna9: Wszystko, co przechodzi przez parametry slotu/sygnału musi być zapisywane w QVariant. Twoje struktury nie są, dopóki ich nie zarejestrujesz typu poprzez Q_DECLARE_METATYPE. Pamiętaj, że muszą się umieć kopiować.
  • Odpowiedz
@Metoksyfenidyna9: Co do bazy to musisz stworzyć swój model, dziedzicząc po QAbstractTableModel, jak byś korzystał z modułu QtSql, to tam już taki jest, ale pamiętam, że z sqlita korzystałeś z ich C api, więc raczej musisz stworzyć własny.
  • Odpowiedz
konto usunięte via Wykop Mobilny (Android)
  • 0
Uczyłem się trochę pythona i tak z miesiąc temu przestałem bo pojawiła się myśl o nauce c++ i tak myślę ten miesiąc i nie wiem w końcu co zrobić. W #szkola mam c++ ale i tak wolałbym sobie ogarnac najpierw c a potem wrócilbym do #python. Co o tym myślicie?
#programowanie #cpp
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

ucz się pythona, c++ jest bardzo podobny


@gdzie_ona_mnie_zabrala: że co? To że oba są imperatywne, nie znaczy że są bardzo podobne. Pythona i C++ dzieli ogromny kanion. W C++ nie masz samozarządzalnej pamięci, duck-typingu itd... C++ jest znacznie trudniejszy. Z tym API systemowym też trochę przegiąłeś.
  • Odpowiedz

jeżeli ten "vector subscript out of range" to błąd wyrzucany przez visual studio na debugu, to przecież on ci tam od razu wskazuje w której linijce to poleciało

EDIT: a nie, przecież właśnie o tej linijce napisałeś na starcie, to pewnie to zauważyłeś
  • Odpowiedz