小编yon*_*oni的帖子

在代码块中自动完成

每次我在CodeBlocks中编程,在开始时,自动完成工作正常.经过一些动作和分钟(我不知道到底是什么原因),部分自动完成工作.

它完成了基本变量的名称,但它没有完成结构的内部名称等.

什么原因?

在"结构的内部名称"中,我的意思是,例如,对于变量gl.A:

typedef struct
{
bool A;

} B;          
B gl;
Run Code Online (Sandbox Code Playgroud)

谢谢,

抱歉我的英语不好......

autocomplete codeblocks

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

两个运算符同时在c ++中重载

我想像数组一样表示我的对象.我的意思是程序员可以写他的代码

myobject[3]=2

在后面(在myobject代码中)根本没有数组,它只是表示.

所以,我需要重载[]=同步.如何才能做到这一点?

谢谢,抱歉我的英语不好.

c++ operator-overloading

5
推荐指数
1
解决办法
209
查看次数

继承静态变量成员,但是将它分别分配给每种继承类

如果类继承了具有静态变量成员的基类,那么它们将是唯一一个与所有继承类共享的成员.

我有几种继承类,并且每一个都有很多实例.我希望每个继承类都有一个单独的静态成员,它与所有实例共享.

怎么做到呢?

谢谢,抱歉我的英语不好.

编辑:

class a{
static int var;};
class b::a{};
class c::a{};
Run Code Online (Sandbox Code Playgroud)

现在,我想的是B的所有实例都会有相同的变种,和C的所有实例都会有相同的变种 ,但该变种 B的将是来自不同变种的C.

我再次对不起我的英语,如果你能纠正我,请你这样做.

c++ inheritance static-members

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

unordered_map如何导致sigsegv

编辑:解决了,我知道如何,但我不明白为什么.

我改变了variables声明

tr1::unordered_map<int,T> variables;
Run Code Online (Sandbox Code Playgroud)

unordered_map<int,T> variables;
Run Code Online (Sandbox Code Playgroud)

它工作正常.

如果你知道为什么请在答案中写下来.

我有一个非常大的程序,所以我不知道我应该带哪个代码.

有一个抽象类,它继承了派生类.摘要有unordered_map<int,int>(模板)作为私有成员和公共方法insert(int,int).

派生类使用基类insert方法将元素插入unordered_map<int,int>容器,

第一个int使用像计数器一样,从0开始.前十一个插入元素正常,但在第12个元素中我得到sigsegv,而struct equal_to在stl_function.h中错误(209).

在调试器中,我看到unordered_map的bucket_count等于11,也许它是某些东西的线索.

我的编译器是gcc 4.6.1.

也许你可以写一般可以导致sigsegv的内容unordered_map.insert

谢谢,抱歉我的英语不好.

如果我知道哪个,我会带来具体的代码.

编辑:这是insert方法:

virtual void Insert(int arrayPlace, T value)
{
    if (!isReadOnly)
    {            
        if (IsValueDataValid(value))
        {
           variables[arrayPlace] = value;
        }
        else
        {
            throw 2;
        }            
    }
    else
    {
        throw 4;
    }
};
Run Code Online (Sandbox Code Playgroud)

声明是:

tr1::unordered_map<int,T> variables;
Run Code Online (Sandbox Code Playgroud)

arrayPlace== 11时,sigsegv会发生,并且无关紧要value.

c++ unordered-map segmentation-fault

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

useState 钩子的“setState”一次调用发生两次

有一个带有方块的板,它们的值依赖于一个数组,它是用useState钩子处理的。每次点击都应该将值提高一,但不幸的是,它会提高两倍(除了第一次点击)。

我的问题是:

(1) 为什么会发生这种情况,(2) 如何避免这种情况,以及,一般来说,(3) 是否有更好的方法来使用钩子处理这样的数组。

let emptyBoard = Array.from({ length: parseInt(props.rows, 10) }, () =>
    new Array(parseInt(props.columns, 10)).fill(0)
  );

  const [squaresValues, setSquaresValue] = useState(emptyBoard);

  function onClick(id) {
    const [rowIndex, cellIndex] = id;
    console.log("the " + id + " square was clicked");
    setSquaresValue(prevValues => {      
      let newBoard = [...prevValues];
      console.log("before: " + newBoard[rowIndex][cellIndex]);
      newBoard[rowIndex][cellIndex] = newBoard[rowIndex][cellIndex] + 1;
      console.log("after: " + newBoard[rowIndex][cellIndex]);
      return newBoard;
    }
    );
  }
Run Code Online (Sandbox Code Playgroud)

日志:

the 3,0 square was clicked 
before: 0 
after: 1 
the …
Run Code Online (Sandbox Code Playgroud)

arrays reactjs react-hooks use-state

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

是否可以将 Class&lt;?&gt; 与新的模式匹配开关一起使用?

作为对方法参数的调查的一部分,我尝试了新的switch 模式匹配(预览版)。使用传统条件,它可以完美运行:

Method firstMethod = BitSet.class.getDeclaredMethods()[0];
Parameter firstParameter = firstMethod.getParameters()[0];
if (firstParameter.getType() == Integer.class) {
        System.out.println("Integer");
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试重构它以使用switch语句时,它没有编译:

Method firstMethod = BitSet.class.getDeclaredMethods()[0];
Parameter firstParameter = firstMethod.getParameters()[0];
switch (firstParameter.getType()) {
    case Integer.class: System.out.println("Integer");
    case int.class: System.out.println("int");
    default: System.out.println("other");
}
Run Code Online (Sandbox Code Playgroud)

错误是:

 error: incompatible types: Class<Integer> cannot be converted to Class<CAP#1>
        case Integer.class: System.out.println("Integer");
                    ^
 where CAP#1 is a fresh type-variable:
   CAP#1 extends Object from capture of ?
Run Code Online (Sandbox Code Playgroud)

这是无法完成的事情,还是只是语法错误?

java switch-statement preview-feature java-17

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

静态方法节省内存?(非托管代码)

关于托管代码中的静态方法这个问题之后,如果那里的答案与像c ++这样的非托管代码相关,我会感兴趣.

我制作了数千个实例,我的问题主要是关于静态方法.这种方法比常规方法节省内存吗?

谢谢,抱歉我的英语不好.

c++ memory static unmanaged

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

BitSet 的 set 方法如何处理向左移动的位?

Java 的类有一个将单个位设置为 1 (=true) 的BitSet方法。Set该方法源码如下:

public void set(int bitIndex) {
    if (bitIndex < 0)
        throw new IndexOutOfBoundsException("bitIndex < 0: " + bitIndex);

    int wordIndex = wordIndex(bitIndex);
    expandTo(wordIndex);

    words[wordIndex] |= (1L << bitIndex); // Restores invariants

    checkInvariants();
}
Run Code Online (Sandbox Code Playgroud)

除了检查之外,该方法的核心代码是:words[wordIndex] |= (1L << bitIndex)。我可以在作业中清楚地看到,左侧部分是保存相关位的特定单词。但是,我不明白右侧部分(位索引的左移)如何导致请求的(并且只有它)位设置为 1。您能解释一下吗?

java bitset

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

并行流在任务完成之前完成

我使用此方法初始化具有默认值的ArrayList:

private ArrayList<Integer> createArrayList(int size, int defaultValue)
{
    ArrayList<Integer> arrayList = new ArrayList<>(size);
    IntStream.range(0, size ).parallel().forEach(i->{arrayList.add(defaultValue);});

    return arrayList;
}
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,如果我通过单元测试检查返回数组的大小,它不是固定数字,并且几乎总是小于请求的大小.

如果我删除parallel()它的大小总是按要求.

为什么会这样?

java parallel-processing thread-safety java-stream

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

模板转换操作符,'const'关键字必需

我有一个模板类OneCell,在这里定义:

template <class T>
class OneCell
{
.....
}
Run Code Online (Sandbox Code Playgroud)

OneCell在这里有一个从T到T 的演员

operator T() const
{
    getterCount++;
    return value;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我想在此方法中增加变量,但因为关键字而出现错误const.

另一方面,如果我删除此关键字,则转换根本不起作用.

我能做什么?

谢谢,抱歉我的英语不好.

c++ templates casting const

0
推荐指数
1
解决办法
112
查看次数