AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / 问题

All perguntas(coding)

Martin Hope
smilingbuddha
Asked: 2025-03-07 00:14:23 +0800 CST

Compreendendo a diferença de tempo de duas funções que incrementam cada elemento de uma matriz de inteiros

  • 8

No código colado abaixo, estou executando duas funções f1and f2que realizam exatamente o mesmo trabalho. Pegue um Tarray de números e inteiros arr(que foi inicializado para 0everywhere) e então incremente Tvezes cada elemento de arr Assim, no final de ambos f1e f2, a entrada 0,0...0deve se tornar T,T...T.

O que eu não entendo é por que f1roda muito mais devagar do que f2(cerca de 1,76 vezes mais lento quando Té, digamos, 1 bilhão). Aqui está minha saída

➜ Diferença de tempo do gcc para desktop.c && ./a.out 1000000000 16

-----> Executando f1 <------- Tempo gasto: 15,511 segundos

-----> Executando f2 <------- Tempo gasto: 8,887 segundos%

Aqui Té fornecido ao programa como argv[1]e o comprimento do array como argv[2]. O timing-difference.carquivo é colado abaixo no final deste post.

Basicamente, f1é incrementar diretamente cada arr[i], enquanto f2usa uma variável temporária tmppara o incremento e, em seguida, atribui-la a arr[i] quando terminar.

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<time.h>

/*Directly increment arr[i] for each i*/
void f1(int T, int* arr, int arrlength){

  printf("\n-----> Running f1 <-------\n");
  clock_t end, start;
  double cpu_time_used;

  // For each element of arr, increment it T times.
  start = clock();
  for(int i = 0 ;  i<arrlength ;++i){
    for (int j=0 ; j<T ; ++j){
      arr[i] += 1;
    }
  }
  end = clock();
  cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC; 

  printf("Time taken: %.3f seconds", cpu_time_used);

}

/*increment arr[i] using temporary variable tmp*/
void f2(int T, int* arr, int arrlength){

  printf("\n-----> Running f2 <-------\n");
  clock_t end, start;
  double cpu_time_used;

  // For each element of arr, increment it T times.
  start = clock();
  for(int i = 0 ;  i<arrlength ;++i){

    int tmp=arr[i];
    for (int j=0 ; j<T ; ++j){
      tmp += 1;
    }
    arr[i] = tmp; 
  }

  end = clock();
  cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC; 
  printf("Time taken: %.3f seconds", cpu_time_used);

}

void print_arr(int* arr, int arrlength){
  for(int i = 0 ; i<arrlength ; ++i){
    printf("%d  ", arr[i]);
  }
  printf("\n\n");

}

/*Zero initialize array*/
void initialize_array(int* arr, int arrlength){
  for (int i=0 ; i<arrlength ; ++i){
    arr[i] = 0;
  }

}

int main(int argc, char** argv){

  int T         = atoi(argv[1]);
  int arrlength = atoi(argv[2]);
  int arr[arrlength];
  
  initialize_array(arr, arrlength);
  f1(T,arr,arrlength);  // --> why does this run slower than f2?
  //print_arr(arr, arrlength);
    
  printf("\n\n");

  initialize_array(arr, arrlength);
  f2(T,arr,arrlength); 
  //print_arr(arr, arrlength);
  
  return 0;
}

EDIT : Eu obtenho as mesmas medições de tempo quando chamof2primeiro ef1depois ou mesmo se eu executo várias vezes.

Com -O2 habilitado, obtenho os timings como 0,000 em ambos. Fiquei curioso sobre as configurações padrão que o gcc estava usando para compilar e por que havia uma diferença tão grande no desempenho. A resposta, como wohlstad sugere, deve estar no assembly, mas, infelizmente, não consigo ler o assembly x86 bem :-( para um entendimento informado

c
  • 1 respostas
  • 52 Views
Martin Hope
GiacomoDB
Asked: 2025-03-06 23:27:16 +0800 CST

Sub-legenda em um gráfico feito com `ggplot2`

  • 8

Estou procurando criar um gráfico com ggplot2, contendo:

  • Um título;
  • Uma legenda;
  • Uma sub-legenda

Tentei usar o código abaixo, que coloca a sublegenda em uma posição que tem uma distância da legenda:

# Common packages loading
library(ggplot2)
library(reshape)
library(readxl)
library(ggrepel)
library(ggtext)


# Dataframe creation
Dati <- data.frame(
  Time = c("0w", "0w", "0w", "6w", "6w", "6w", "8w", "8w", "8w", "10w", "10w", "10w"),
  Peel_max = c(3.91, 4.4, 4.17, 3.24, 3.77, 2.91, 2.68, 2.79, 2.24, 1.84, 1.8, 1.54),
  Foil_break = c("Foil break", "Foil break", "Foil break", "Foil break", "Foil break", "Foil break", "", "", "", "", "", ""),
  FoilSide = c("A", "B", "C", "A", "B", "C", "A", "B", "C", "A", "B", "C")
)


# Definition of the factors
Dati$Time = factor(Dati$Time, levels = c("0w","6w","8w","10w"))


# Generic grapoh creation
Graph2 <- ggplot(Dati, aes(x= `Time`, col=`FoilSide`)) +
  geom_point(aes(y= `Peel max`, color=`FoilSide`), shape = 1, size = 3.5) + 
  geom_line(aes(x=as.numeric(Dati$`Time`), y= `Peel max`, col=`FoilSide`)) +
  theme_classic() +
  scale_x_discrete(name="Time (Weeks)", expand=c(0.05, 0)) +
  ggtitle("This is the title", subtitle = "This is the subtitle") +
  theme(plot.title = element_text(hjust = 0.5), 
        plot.subtitle = element_text(hjust = 0.5))




# Addition of the SubSubtitle, which is placing it too below
Graph2 = Graph2 + 
  annotate("text", 
           x = mean(range(as.numeric(Dati$`Time`))),  
           y = 6,  # Imposta un valore negativo
           label = "Max peel measured when foil breaks, otherwise reported the average peel", 
           size = 2.5, fontface = "italic", hjust = 0.5)


Graph2

insira a descrição da imagem aqui

Se eu aumentar o valor da yposição ele estica o gráfico mantendo a mesma distância, pois a anotação está escrita no gráfico, a legenda está na labelparte.

insira a descrição da imagem aqui

Existe alguma maneira de adicionar uma legenda logo abaixo da legenda com tamanho menor e centralizada?

  • 3 respostas
  • 89 Views
Martin Hope
Mayo
Asked: 2025-03-06 23:01:44 +0800 CST

Executar processo em segundo plano no TaskScheduler de alta prioridade

  • 8

Tenho uma base de código legada que está deixando o ThreadPool faminto por causa de muitas chamadas de sincronização (em vez de usar async/await). Estou tentando criar um processo em segundo plano que prolongará o lease do kubernetes devido ao gerenciamento de bloqueios no caso de execução em várias réplicas. Este processo deve ser executado com a prioridade mais alta. Mas estou com dificuldades para fazer isso porque parece não ser tão fácil ignorar o ThreadPool. Tentei usar o TaskScheduler personalizado com threads próprios, mas sem sorte. Isso é possível?

Aqui está minha implementação usando CustomTaskScheduler. O programa trava em HttpClient SendAsync().

class Program
{
    static async Task Main()
    {
        // Simulate thread pool starvation
        ThreadPool.SetMaxThreads(50, 1);
        for (int i = 0; i < 60; i++)
        {
            _ = Task.Run(() =>
            {
                Thread.Sleep(100000);
            });
        }

        using (var scheduler = new CustomTaskScheduler(workerCount: 1))
        {
            var factory = new TaskFactory(scheduler);
            var tasks = new List<Task>();

            for (int i = 0; i < 5; i++)
            {
                int taskNum = i;
                await factory.StartNew(async () =>
                {
                    Console.WriteLine($"Task {taskNum} is running on thread {Thread.CurrentThread.ManagedThreadId}");
                    await RunAsyncFunction(taskNum);
                }, CancellationToken.None, TaskCreationOptions.None, scheduler).Unwrap();
            }
        }

        Console.WriteLine("All tasks completed.");
        await Task.Delay(1000000);
    }

    static async Task RunAsyncFunction(int taskNum)
    {
        Console.WriteLine($"Task {taskNum} started on thread {Thread.CurrentThread.ManagedThreadId}");
        var client = new HttpClient();
        await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "https://kubernetes/healthz"));
        Console.WriteLine($"Task {taskNum} resumed on thread {Thread.CurrentThread.ManagedThreadId}");
    }
}

public class CustomTaskScheduler : TaskScheduler, IDisposable
{
    private readonly System.Collections.Concurrent.BlockingCollection<Task> taskQueue = new();
    private readonly List<Thread> workerThreads = new();
    private readonly CancellationTokenSource cts = new();

    public CustomTaskScheduler(int workerCount)
    {
        for (int i = 0; i < workerCount; i++)
        {
            var thread = new Thread(WorkerLoop)
            {
                IsBackground = true
            };
            workerThreads.Add(thread);
            thread.Start();
        }
    }

    protected override IEnumerable<Task> GetScheduledTasks() => taskQueue.ToArray();

    protected override void QueueTask(Task task)
    {
        if (cts.IsCancellationRequested)
            throw new InvalidOperationException("Scheduler is shutting down.");

        taskQueue.Add(task);
    }

    protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued)
    {
        return TryExecuteTask(task);
    }

    private void WorkerLoop()
    {
        try
        {
            foreach (var task in taskQueue.GetConsumingEnumerable(cts.Token))
            {
                Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
                TryExecuteTask(task);
            }
        }
        catch (OperationCanceledException) when (cts.IsCancellationRequested) { }
    }

    public void Dispose()
    {
        cts.Cancel();
        taskQueue.CompleteAdding();
        foreach (var worker in workerThreads)
        {
            worker.Join();
        }
        taskQueue.Dispose();
        cts.Dispose();
    }
}

EDIT: É interessante que o código trava mesmo se eu usar a versão síncrona do HttpClient Send() no meu próprio thread. Então ele ainda está usando ThreadPool. Aqui está a versão síncrona


ThreadPool.SetMaxThreads(12, 10000);
for (int i = 0; i < 20; i++)
{
    _ = Task.Run(() =>
    {
        Thread.Sleep(100000);
    });
}

var thread = new Thread(SendHttpRequest);
thread.IsBackground = true;
thread.Start();

Thread.Sleep(100000);


static void SendHttpRequest()
{
    using (HttpClient client = new HttpClient())
    using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://kubernetes/healthz"))
    {
        var response = client.Send(request);
        // Never goes here if ThreadPool is exhausted
        Console.WriteLine(response.Content.ReadAsStringAsync().Result);
    }
}

c#
  • 2 respostas
  • 76 Views
Martin Hope
Milos Stojanovic
Asked: 2025-03-06 22:38:52 +0800 CST

Regex para remover substrings como "Vídeo oficial", "Áudio", "Vídeo musical"... da string

  • 8

Estou tentando limpar o título do vídeo do YouTube de palavras desnecessárias como "Vídeo Oficial", "Áudio", "Vídeo Musical" etc. Preciso de ajuda para construir regex que eu possa usar. O que tentei até agora:

const regex = /\s*[-\(\[]?\s*(-|official|video|audio|lyrics|lyric|hd|full|4k|music\s+video|\d{4})\s*[\)\]]?$/gi;

Pelo que entendi, isso removeria apenas a última ocorrência de palavras-chave. O que eu fiz foi usá-lo em um loop como este:

function clearSearchTerm(title) {
    const regex = /\s*[-\(\[]?\s*(-|official|video|audio|lyrics|lyric|hd|full|4k|music\s+video|\d{4})\s*[\)\]]?$/gi;
    let newTitle;

    do {
        newTitle = title;
        title = title.replace(regex, "");
    } while (newTitle !== title);

    return title;
}

Agora funciona para mim, pois não encontrei nenhum exemplo em que não funcionasse. O que foi mencionado nos comentários é que eu tinha um problema que meu regex anterior removia palavras-chave se elas aparecessem no meio do título, o que eu acho que foi resolvido com isso. Se você tiver alguma ideia de como isso pode ser melhorado, estou todo ouvidos. Na próxima parte, escreverei exemplos do que preciso remover.

As palavras que estou tentando remover são do tipo:

Audio
Video
Lyrics
Official
Remaster
2020 (or years in general)
...

E todas essas palavras (e talvez mais) podem aparecer entre (and )ou between [and ]or depois de -. Essas palavras podem ser combinadas, por exemplo: Some title - Official Videowhich should be cleaned to be Some titleetc.

javascript
  • 2 respostas
  • 101 Views
Martin Hope
glades
Asked: 2025-03-06 16:16:37 +0800 CST

Verificação em tempo de compilação se a string contém aspas

  • 8

Quero afirmar que um objeto JsonKeyse construído com uma string que é conhecida em tempo de compilação não contém uma citação. Aqui está o que eu tenho:

Demonstração ao vivo

#include<iostream>

template <size_t N>
constexpr bool check_no_quotes(const char (&str)[N])
{
    for (size_t i = 0; i < N; i++) // Initialize 'i' here
    {
        if (str[i] == '"')  // No need for the backslash here
            return false;
    }
    return true;
}

struct JsonKey
{
    template <size_t N>
    constexpr JsonKey(const char (&str)[N])
    {
        static_assert(check_no_quotes(str), "Can't have quotes");
    }
};

int main()
{
    // This will compile because it does not contain quotes
    JsonKey("json_key_without_quotes");

    // This will fail to compile because it contains quotes
    // JsonKey("json key with \"quotes\""); // Uncommenting this will trigger the static_assert error

    return 0;
}

O erro que recebo:

<source>: In instantiation of 'constexpr JsonKey::JsonKey(const char (&)[N]) [with long unsigned int N = 24]':
<source>:26:38:   required from here
   26 |     JsonKey("json_key_without_quotes");
      |                                      ^
<source>:19:38: error: non-constant condition for static assertion
   19 |         static_assert(check_no_quotes(str), "Can't have quotes");
      |                       ~~~~~~~~~~~~~~~^~~~~
<source>:19:38:   in 'constexpr' expansion of 'check_no_quotes<24>((* & str))'
<source>:8:16: error: 'str' is not a constant expression
    8 |         if (str[i] == '"')  // No need for the backslash here
      |             ~~~^
Compiler returned: 1

Não entendo por que stro tempo de compilação não está disponível aqui.

c++
  • 2 respostas
  • 106 Views
Martin Hope
CCJ
Asked: 2025-03-06 07:51:20 +0800 CST

Como o vector<string>(const char** first, const char** last...) funciona quando o último é fornecido simplesmente como o primeiro mais a contagem de strings?

  • 8

Eu estava procurando converter um const char** bruto para um vetor e descobri uma resposta concisa aqui . Isso funciona, mas estou confuso sobre como. O uso do construtor de vetor é o seguinte:

const char* array[] = {"cat", "cows", "crows"};
int count = 3;
vector<string> stringVector(array, array + count);

Eu presumo que este seja o

template< class InputIt >
vector( InputIt first, InputIt last,
  const Allocator& alloc = Allocator() );

construtor de vetor da documentação usando um alocador std::string, mas como o ponteiro aritmético array + count pode nos dar o ponteiro para a última string de caracteres sem levar em conta o comprimento das strings de caracteres intermediárias? Supondo que os comprimentos das strings de caracteres sejam levados em conta, como/onde isso ocorre?

Eu diria que alguma 'medição até que o terminador nulo seja encontrado' estava acontecendo nos bastidores se os parâmetros fossem apenas ponteiro inicial e contagem de strings, mas esta forma parece estar usando aritmética direta de ponteiro; array + count não parece ter informações suficientes para encontrar o endereço inicial real da string de caracteres final (a menos que o operador + tenha algum trabalho muito sofisticado para strings de caracteres de alguma forma).

c++
  • 1 respostas
  • 75 Views
Martin Hope
akasaka
Asked: 2025-03-05 23:03:44 +0800 CST

Como evitar que um código que depende muito de polimorfismo fique cheio de `make_shared` por todo lugar?

  • 8

Estou escrevendo uma estrutura de interface de usuário para um microcontrolador, no qual quero criar um sistema de menu hierárquico.

Para isso em particular tenho as seguintes classes:

class MenuNode {
public:
    MenuNode(const std::string t, const UI::Image* img): title{t}, icon{img} {}
    virtual ~MenuNode() = default;

    const std::string title;
    const UI::Image * icon;
    virtual void execute(MenuNavigator * host) const { ESP_LOGE("MenuNode", "Did you forget to override execute()?"); }
    virtual bool is_submenu() const { return false; }
};


class ListMenuNode: public MenuPresentable, public MenuNode,  public UI::ListView {
public:
    ListMenuNode(const std::string title, const std::vector<std::shared_ptr<MenuNode>>& items, const UI::Image* icon = nullptr): 
        subnodes(items),
        UI::ListView(EGRectZero, {}), MenuNode(title, icon) {
    }

    void execute(MenuNavigator * host) const override {
        host->push(std::make_shared<ListMenuNode>(*this));
    }

    void on_presented() override {
        // update frames of things after push has set our frame correctly
        ...
    }

    void on_key_pressed(VirtualKey k, MenuNavigator* host) override {
        if(k == RVK_CURS_DOWN) down();
        else if(k == RVK_CURS_UP) up();
        else if(k == RVK_CURS_ENTER) {
            subnodes[selection]->execute(host);
        }
        else if(k == RVK_CURS_LEFT) {
            host->pop();
        }
    }
protected:
    const std::vector<std::shared_ptr<MenuNode>> subnodes;
};

Aqui, tenho que criar subnodesum vetor shared_ptr<MenuNode>em vez de diretamente MenuNode— caso contrário, ao selecionar um item, MenuNode::execute()ele só será chamado em vez da substituição da classe descendente deste método.

Estou bem com isso na maior parte, no entanto, isso significa que uma declaração do menu se parece com o seguinte

ListMenuNode(
 "Settings",
    {
        std::make_shared<MenuNode>("Item 1", &icn_wifi),
        std::make_shared<ListMenuNode>(ListMenuNode("Drill Down", {
            std::make_shared<MenuNode>("Drill Item 1", &icn_cd),
            std::make_shared<MenuNode>("Drill Item 2", &icn_bt),
            std::make_shared<MenuNode>("Drill Item 3", &icn_radio),
        }, &icn_about))
    }
)

O que parece muito sujo devido às chamadas repetitivas para make_shared.

Existe alguma maneira de tornar a criação do ponteiro implícita, para que eu possa escrever algo como o seguinte?

ListMenuNode(
 "Settings",
    {
        MenuNode("Item 1", &icn_wifi),
        ListMenuNode("Drill Down", {
            MenuNode("Drill Item 1", &icn_cd),
            MenuNode("Drill Item 2", &icn_bt),
            MenuNode("Drill Item 3", &icn_radio),
        }, &icn_about)
    }
)

Uma maneira que pensei foi usar #define's para cada nome de classe, mas isso não me parece muito claro.

c++
  • 1 respostas
  • 101 Views
Martin Hope
DekiGembes
Asked: 2025-03-05 19:21:29 +0800 CST

É possível evitar que um arquivo específico seja alterado no branch remoto sem um git force push

  • 8

Compartilhamos um arquivo de build chamado build.sh, que cria um arquivo binário em um caminho específico. Como muitos desenvolvedores alteram o caminho neste arquivo build.sh em seu ambiente local com frequência e esquecem de alterá-lo de volta (queremos manter o caminho de build padrão no arquivo build.sh no branch remoto), um aviso de que um push forçado é necessário para enviar este arquivo para o branch remoto seria ótimo. (às vezes, mas não com frequência, realmente temos que alterar esse arquivo)

.gitignore não é uma opção, pois o arquivo já existe no repositório.

Usamos o bitbucket. Uma solução global seria melhor do que alterar as configurações do git localmente.

Alguma ideia?

Dizer aos desenvolvedores para não usar caminhos individuais certamente ajudaria, mas as pessoas geralmente não seguem isso.

git
  • 3 respostas
  • 60 Views
Martin Hope
Zeyu Zhang CN
Asked: 2025-03-05 19:09:22 +0800 CST

Como posso implementar um wrapper de função que suporte tanto void quanto outros tipos de valor de retorno?

  • 8

Implementei algo assim:

   template<typename F, typename... Args>
    static auto run_func(F&& f, const string& msg, Args&&... args) -> decltype(f(args...)) {
        using T = decltype(f(args...));
        cout << msg << endl;
        auto timer = Timer(); // something that can record time


        auto res = std::invoke(f, args...); // here is the position of failure 
        cout << "\t- time used: " << timer.time_duration() << endl;

        return res;
    }

Isso funciona como eu quero que funcione, somente se fnão for void f(...):

    int func1(a, b) {return a + b;} 
    void func2(a, b, c) {cout << a + b + c << endl;} 
    
    cout << run_func(func1, 1, 2); // this works
    run_func(func2, 2, 3, 4); // this fails

Você sabe como eu poderia fazer isso run_funcfuncionar de todas as maneiras?

c++
  • 2 respostas
  • 72 Views
Martin Hope
Zoltan K.
Asked: 2025-03-05 18:48:57 +0800 CST

O que o qualificador const está anexado em C: à área de memória ou ao ponteiro?

  • 8

Fiquei pensando se o constqualificador em C é o atributo do ponteiro ou da área de memória?

Se eu fizer algo como:

struct S { int data; }
struct CS { const int data; }

char *p = malloc(100);

struct S *s = p+10;
struct CS *cs = p+10;

Posso acessar a mesma área de memória para CSleitura e Sescrita, sem que essas duas áreas saibam da existência uma da outra?

Ou a constmarca é exatamente essa área de memória const?

Q&A: Não, não posso simplesmente "experimentar", porque não sei quando e como essa diferença pode entrar em jogo. Todas as experiências que tive até agora apontam para constser estritamente um atributo variável. É assim, ou eu simplesmente perdi aquele exemplo que prova que estou errado?

c
  • 2 respostas
  • 96 Views
Prev
Próximo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve