小编Iha*_*imi的帖子

如何使用构造函数创建新地图?

我想做两件事

  1. 创建一个私有实例变量,它是一个映射

  2. 在我的构造函数中创建一个空实例,它实现了一个地图并将其分配给前一个私有实例变量.

我拥有的私有实例是

private final Map<Character, SortedSet<String>> thesaurus = 
                      new HashMap <Character, SortedSet<String>>();
Run Code Online (Sandbox Code Playgroud)

但是如何在构造函数中创建一个实例变量,该变量将在构造函数创建时引用私有变量同义词库.

例如

public class Book{

    private final Map<Character, SortedSet<String>> thesaurus = 
                           new HashMap <Character, SortedSet<String>>();

public Book(){

    super();    
    /* What do i put here as an empty instance 
     * variable that implements a map and how 
     * do i assign it to thesaurus? 
     */
}
Run Code Online (Sandbox Code Playgroud)

java

7
推荐指数
1
解决办法
4万
查看次数

C++的模拟scanf("%1d")(std :: cin)

我正在为std :: cin >>序列寻找一些模拟scanf("%1d",&sequence).

例如:

for ( ; scanf("%1d", &sequence) == 1; ) {
    printf("%d ", sequence);
}
Run Code Online (Sandbox Code Playgroud)
stdin: 5341235
stdout: 5 3 4 1 2 3 5 

它在C++中是如何工作的?

for ( ; std::cin >> *some_magic* sequence; ) {
    std::cout << sequence << " ";
}
Run Code Online (Sandbox Code Playgroud)

c++

7
推荐指数
1
解决办法
1555
查看次数

使用字符串进行非常大的数字的乘法

我正在尝试编写一个 C 程序,该程序在不直接使用乘法运算符的情况下执行两个数字的乘法,并且它应该考虑足够大的数字,以便即使这两个数字的通常加法也不能通过直接加法来执行。

当我尝试(并且成功地)编写一个使用字符串执行加法的 C 程序时,我受到了这一点的激励,我执行了以下操作:

#include<stdio.h>
#define N 100000
#include<string.h>
void pushelts(char X[], int n){
int i, j;
for (j = 0; j < n; j++){
    for (i = strlen(X); i >= 0; i--){
        X[i + 1] = X[i];
    }
        X[0] = '0'; 
    }
}

int max(int a, int b){
    if (a > b){ return a; }
    return b;
}

void main(){
    char E[N], F[N]; int C[N]; int i, j, a, b, c, d = 0, e;
    printf("Enter the …
Run Code Online (Sandbox Code Playgroud)

c string algorithm

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

在O(logn)时间内找到从k = 0到n的x ^ k之和

所以我的问题是如何在C中更具体地做到这一点.我知道O(logn)通常意味着我们将以某种方式拆分其中一个参数来使用递归.

我正在努力实现为k = 0至x N的总和ñ.例如,exponent_sum(x,n)将是这种情况下的参数.

然后,

exponent_sum(4, 4)将是4 0 + 4 1 + 4 2 + 4 3 + 4 4 = 341.

我不知道从哪里开始.一些提示将非常感激.

c algorithm big-o

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

从c中的文本文件中读取矩阵

我正在尝试读取文本文件并将数据存储在矩阵中.我在读完每一行后打印结果,似乎它正在工作,但如果我在最后打印矩阵,我的结果不一样.我找不到我做错了什么!

int main()
{
    int i,j;
    double value[10000][2];
    FILE *archivo;
    archivo = fopen("pruebas.txt","r");
    if (archivo == NULL)
        exit(1);
    i=0;
    while (feof(archivo) == 0)
    {
        fscanf( archivo, "%lf %lf %lf", &value[i][0],&value[i][1],&value[i][2]);
        printf("%10.0f %f %f\n", value[i][0], value[i][1], value[i][2]);
        i++;
    }

    printf("Your matrix:\n");
    for(j = 0; j < i; j++)
        printf("%10.0f %10.3f %10.3f\n", value[j][0], value[j][1], value[j][2]);

    fclose(archivo);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是该程序的输出:

1 2 3 
4 5 6  
7 8 9   
Your matrix:  
1 2 4  
4 5 7  
7 8 9  
Run Code Online (Sandbox Code Playgroud)

c arrays matrix text-files

6
推荐指数
1
解决办法
2362
查看次数

启动 Postgres 时出错

我在一个实时站点(以及它相应的开发站点)上遇到一个奇怪的错误,其中 Postgres 数据库不想启动。这个问题突然出现,不知道是什么原因造成的。

尝试在终端中启动会出现可怕的“不接受 5432 连接”

sudo -u postgres psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)

如果我尝试重新启动 postgres:

service postgresql restart
 * Restarting PostgreSQL 9.1 database server                                                                                                                                                                    * The PostgreSQL server failed to start. Please check the log output:
2015-07-15 13:49:24 EEST LOG:  database system was interrupted; last known up at 2015-07-12 20:02:18 EEST
2015-07-15 13:49:24 EEST FATAL:  could not open file …
Run Code Online (Sandbox Code Playgroud)

postgresql ubuntu-14.04

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

ld:无法打开输出文件进行写入:bin/s,errno = 2,用于体系结构x86_64

我正在尝试在OSX El Capitan上编译我的代码.这是我的Makefile

TARGET   = proj_name

CC       = gcc
# compiling flags 
CFLAGS   = -std=c99 -Wall -I.

LINKER   = gcc -o
# linking flags 
LFLAGS   = -Wall -I. -lm

SRCDIR   = src
OBJDIR   = obj
BINDIR   = bin

SOURCES  := $(wildcard $(SRCDIR)/*.c)
INCLUDES := $(wildcard $(SRCDIR)/*.h)
OBJECTS  := $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
rm       = rm -f


$(BINDIR)/$(TARGET): $(OBJECTS)
    @$(LINKER) $@ $(LFLAGS) $(OBJECTS)
    @echo "Linking complete!"

$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.c
    @$(CC) $(CFLAGS) -c $< -o $@
    @echo "Compiled "$<" successfully!"

.PHONEY: clean
clean:
    @$(rm) …
Run Code Online (Sandbox Code Playgroud)

c macos gcc

6
推荐指数
1
解决办法
5671
查看次数

从非常大的文件中解析每四行的最有效方法

我有一个以下格式的文件:

1: some_basic_info_in_this_line
2: LOTS_OF_INFO_IN_THIS_LINE_HUNDREDS_OF_CHARS
3: some_basic_info_in_this_line
4: LOTS_OF_INFO_IN_THIS_LINE_HUNDREDS_OF_CHARS
...
Run Code Online (Sandbox Code Playgroud)

这种格式重复数万次,文件最多可达50 GiB +.我需要一种有效的方法来处理这种格式的第2行.我愿意使用C,C++ 11 STL或者提升.我已经查看了有关SO上的文件流的各种其他问题,但我觉得我的情况是独特的,因为文件很大,只需要每四行中有一行.

内存映射文件似乎是我读过的最有效的,但是映射50+ GB文件会占用大多数计算机RAM(你可以假设这个应用程序将被"普通"用户使用 - 比如4-8 GiB RAM).此外,我只需要一次处理其中一行.以下是我目前正在做的事情(是的,我知道这不是有效的,这就是为什么我要重新设计它):

std::string GL::getRead(ifstream& input)
{
    std::string str;
    std::string toss;
    if (input.good())
    {
        getline(input, toss);
        getline(input, str);
        getline(input, toss);
        getline(input, toss);
    }
    return str;
}
Run Code Online (Sandbox Code Playgroud)

将mmap打破成块可以解决我的情况吗?反正我是否只能利用4行中的1行?谢谢您的帮助.

c++ performance boost c++11

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

如何在模板中初始化为零/ NULL

在编写模板时,我想将我的变量初始化为一个值,该值用作零或null数据类型.如果我将其设置为0x00,它将作为任何类型的零/ NULL?

例如

这是模板声明

template <class T>
...
T A=0x00;
Run Code Online (Sandbox Code Playgroud)

现在,如果我定义了一个T => std :: string类型的实例,那么上面的语句是NULL什么?

怎么样" int"和" unsigned int".两者都用作"0"?

c++ variable-initialization

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

在C中更改函数内部的数组

我正在学习C并且困惑为什么在主要内部创建的数组不会在函数内部发生变化,我假设传递的数组是一个指针,并且更改指针应该更改数组,对吧?谁可以解释在这种情况下发生了什么?

thx的帮助.

int main(){
    int i, length = 10;
    int array[length];

    for (i = 0 ; i < length ; i++)
        array[i] = i * 10;
    printf("Before:");
    print(array, length);
    change(array, length);
    printf("After:");
    print(array, length);

    return 0;
}

// Print on console the array of int
void print(int *array,int length)
{
    int i;
    for(i = 0 ; i < length ; i++)
        printf("%d ", array[i]);
    printf("\n");
}

// Change the pointer of the array
void change(int *array,int length)
{
    int *new …
Run Code Online (Sandbox Code Playgroud)

c arrays pointers function

6
推荐指数
1
解决办法
3万
查看次数