小编You*_*ufi的帖子

SIGKILL杀死了这个过程

我有一个进程在执行程序后立即被杀死.这是已编译的可执行文件的代码,它是一个小程序,它读取由标准输入(通常是描述性文件)中的数字表示的多个图形,并使用Prim算法找到每个图形的最小生成树(它不显示结果,它只是找到解决方案).

#include <stdlib.h>  
#include <iostream>  

using namespace std;

const int MAX_NODOS = 20000;
const int infinito = 10000;

int nnodos;
int nAristas;
int G[MAX_NODOS][MAX_NODOS]; 
int solucion[MAX_NODOS][MAX_NODOS];
int menorCoste[MAX_NODOS];
int masCercano[MAX_NODOS];



void leeGrafo(){
    if (nnodos<0 || nnodos>MAX_NODOS) {
        cerr << "Numero de nodos (" << nnodos << ") no valido\n";
        exit(0);
    }  
    for (int i=0; i<nnodos ; i++)
        for (int j=0; j<nnodos ; j++)
            G[i][j] = infinito; 
    int A,B,P;
    for(int i=0;i<nAristas;i++){
        cin >> A >> B >> P; 
        G[A][B] = P; …
Run Code Online (Sandbox Code Playgroud)

c++ ubuntu gcc sigkill execve

6
推荐指数
2
解决办法
4690
查看次数

错误:在'&'标记之前预期';',','或')'

我在此行的C头文件中收到此错误:

char * getFechaHora(time_t & tiempoPuro);
Run Code Online (Sandbox Code Playgroud)

在C源代码文件中,我包含头文件并为函数提供实现

char * getFechaHora(time_t &tiempoPuro){...}
Run Code Online (Sandbox Code Playgroud)

同样在我的头文件中,我正确地包含了"time.h"库.

c gcc token

5
推荐指数
2
解决办法
3万
查看次数

删除指针数组而不删除内存中指向的对象?

我想知道是否有一种方法可以删除指针数组而不触及内存中的指向对象。

HashSet我正在为几天前实现的一个限制例程编写一个限制例程,因此当哈希表已满时,它会被另一个双倍大小的表替换。我使用指向对象的指针数组 ( User) 来表示哈希表,并且该数组本身是在我的类中动态声明的HashSet,因此可以在使用哈希函数将其所有内容复制到新表后将其删除。

所以基本上我需要:

  1. 声明另一个表,其大小等于原始数组大小的两倍。
  2. 将每个指向User对象的指针从原始数组复制到应用哈希函数的新数组(它User从内存中获取对象,并使用表示用户名的字符串计算索引)。
  3. 将原始数组中的所有指针插入到新数组后,我必须释放为原始数组分配的内存,并将 HashSet 类(成员 private userContainer)中的指针替换为新数组(数组)的位置。

问题是,如果我用来delete[] userContainer释放为其分配的内存,它还会删除内存中的每个对象,因此新创建的替换数组将指向内存中已释放的位置!

c++ arrays memory-management

2
推荐指数
1
解决办法
3446
查看次数

预期')'之前';' 令牌G ++

GCC一直告诉我:

预期')'之前';' token,
''
'''''''''''''''''''''''''' 在')'令牌之前

我找不到问题.这是有问题的功能:

void prim(){
    prepararEstructuras();
    int min,k;  
    for(int i=1;i<nnodos;i++){
        min = menorCoste[1];
        k = 1;
        for(int j=2;i<nnodos;j++)
            if(menorCoste[j] < min){
                min = menorCoste[j];
                k = j;
            }
        solucion[k][masCercano[k]] = G[k][masCercano[k]];
        menorCoste[k] = infinito;
        for(int j=1;j<nnodos;j++)
            if(G[k][j] < menorCoste[j] && menorCoste[j]!=infinito){
                menorCoste[j] = G[k][j];
                masCercano[j] = k;
            }                   
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是导致问题的行:

if(G[k][j] < menorCoste[j] && menorCoste[j]!=infinito){
Run Code Online (Sandbox Code Playgroud)

这是我的变量:

#define MAX_NODOS 20000
#define infinito 10000;

int nnodos;
int nAristas;
int G[MAX_NODOS][MAX_NODOS]; 
int solucion[MAX_NODOS][MAX_NODOS];
int menorCoste[MAX_NODOS];
int masCercano[MAX_NODOS];
Run Code Online (Sandbox Code Playgroud)

c++ gcc expression token

2
推荐指数
1
解决办法
1112
查看次数

从Oracle SQL表中删除有限的N行

我想为在3个以上项目中工作的每位员工准确删除2行/记录。假设我有这张桌子:

+----------+-------------+
| employee |  Project    |
+----------+-------------+
|   1      |   p1        |
|   1      |   p2        |
|   1      |   p3        |
|   1      |   p4        |
|   2      |   p1        |
|   2      |   p3        |
|   3      |   p1        |
|   3      |   p4        |
|   3      |   p5        |
+----------+-------------+
Run Code Online (Sandbox Code Playgroud)

我可以查询哪些员工在三个以上的项目中工作。在这种情况下,标识为1的员工和标识为3的员工。查询应为:

select employee
  from (
    select employee, count(*) my_count
      from my_table
      group by employee
  ) VW
  where VW.my_count >= 3;
Run Code Online (Sandbox Code Playgroud)

删除哪一行并不重要,重要的是要为在三个以上项目中工作的每个员工删除两行/记录。结果表可能是例如:

+----------+-------------+
| employee |  Project …
Run Code Online (Sandbox Code Playgroud)

sql oracle delete-row

2
推荐指数
2
解决办法
8259
查看次数

标签 统计

c++ ×3

gcc ×3

token ×2

arrays ×1

c ×1

delete-row ×1

execve ×1

expression ×1

memory-management ×1

oracle ×1

sigkill ×1

sql ×1

ubuntu ×1