标签: counting

C++中的引用计数

我正在用C++实现一个数学库.该库将被编译为DLL,因此使用它的人只需要类的定义的头文件.

我班级的用户将是不熟悉该语言的人.但是,有些对象可能会在程序的几个部分中被引用.由于我不指望他们做内存管理,我想自己做.因此,我必须实现引用计数(垃圾收集不可能).

我想让那个引用计数尽可能透明,例如......

// Define a Bézier curve
CVecList pts;
pts.Add(Vector(0,0,0));
pts.Add(Vector(0,0,100));
pts.Add(Vector(0,100,0));
pts.Add(Vector(0,100,100));
CCurve* c1 = new CBezier(pts);

// Define a 3rd order B-Spline curve
pts.Clear();
pts.Add(Vector(0,0,0));
pts.Add(Vector(0,200,100));
pts.Add(Vector(0,200,200));
pts.Add(Vector(0,-200,100));
pts.Add(Vector(0,-200,200));
pts.Add(Vector(0,0,0));
CCurve* c2 = new CBSpline(pts,3);

// The Bézier curve object must be deleted automatically
// because the only reference to it has been released
// Similar to IUnknown::Release() in COM
c1 = c2;
Run Code Online (Sandbox Code Playgroud)

当我定义表面对象时,事情变得有点棘手,因为一些表面是根据两条曲线定义的:

CVecList pts;
// ...
CCurve* f = new CBezier(pts);

pts.Clear();
// ...
CCurve* …
Run Code Online (Sandbox Code Playgroud)

c++ reference counting

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

计算字符串中字符串的出现次数

计算字符串中所有子字符串出现次数的最佳方法是什么?

示例:计算Foo内部的出现次数FooBarFooBarFoo

c++ string counting

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

计算三角形内的格点

我有一个大三角形的点,我们称之为 a、b、c。(a =(x,y)等)。

现在我想统计这个三角形围成的区域内有多少个积分点,所以我首先看一下皮克定理。我考虑的第二种方法是生成一个以三角形的最大值、最小值为界的点列表,然后检查每个点是否位于三角形内部。

我使用重心坐标方法来做到这一点。它有效,但是我的三角形相当大,我的程序基本上是跨点的蛮力。我如何改进这个算法?

我的代码可以在这里找到:https ://bpaste.net/show/58433b6e389c

algorithm collision-detection counting

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

计算事件的最有效方法?

我有一个字节数组(原始),它们可以有随机值.我试图以最有效/最快的方式计算它们在数组中的出现次数.目前我正在使用:

HashMap<Byte, Integer> dataCount = new HashMap<>();
for (byte b : data) dataCount.put(b, dataCount.getOrDefault(b, 0) + 1);
Run Code Online (Sandbox Code Playgroud)

这个单行程需要大约500ms来处理长度为24883200的字节[].使用常规for循环至少需要600ms.

我一直在考虑构造一个集合(因为它们只包含每个元素中的一个),然后使用Collections.frequency()将它添加到HashMap ,但是从原语构造Set的方法需要几个其他调用,所以我是猜测它不是那么快.

完成每个项目发生次数的最快方法是什么?

我正在使用Java 8,如果可能的话,我宁愿避免使用Apache Commons.

java performance counting

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

Python:当网格大小太大时,递归调用计数行走网格的方式会产生错误的答案

问题:

想象一下,你从X by Y网格的角落开始.您只能向两个方向移动:向右和向下.从(0,0)到(X,Y)的路径有多少

我有两种方法,第一种是使用通过memoization增强的递归算法,第二种是使用二项式计数策略

递归方式

def gridMovingCount(x, y, cache):
    if x == 0 or y == 0:
        return 1
    elif str(x)+":"+str(y) in cache:
        return cache[str(x)+":"+str(y)]
    else:
        cache[str(x)+":"+str(y)] = gridMovingCount(x-1, y, cache) + gridMovingCount(x, y-1, cache) 
        return cache[str(x)+":"+str(y)]
Run Code Online (Sandbox Code Playgroud)

二项式计数

def gridMovingCountByBinomial(x, y):
    return int(math.factorial(x + y) / (math.factorial(x) * math.factorial(y)))
Run Code Online (Sandbox Code Playgroud)

当x和y相对较小时,这两种方式给出相同的答案

 #the same result
 print(gridMovingCount(20, 20, cache))    #137846528820
 print(gridMovingCountByBinomial(20, 20)) #137846528820
Run Code Online (Sandbox Code Playgroud)

当x和y很大时

# gave different result
print(gridMovingCount(50, 50, cache))    #100891344545564193334812497256
print(gridMovingCountByBinomial(50, 50)) #100891344545564202071714955264
Run Code Online (Sandbox Code Playgroud)

对此有何解释?堆栈溢出某种?但是,它不会抛出任何异常.有没有办法克服这个递归调用?

python recursion counting python-3.x

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

检查特定字符是否在字符串中

我需要查找并计算字符串中可以找到多少个字符.我已将字符分为chars1 [a:m]和chars2 [n:z],并有两个计数器.

输出应为0/14,但它是0/1.我认为它只检查是否包含一个且只有一个项目,然后退出循环.是这样的吗?

这是代码.

string_1 = "aaabbbbhaijjjm"

def error_printer(s):
    chars1 = "abcdefghijklm"
    chars2 = "nopqrstuvwxyz"
    counter1 = 0
    counter2 = 0

    if ((c in s) for c in chars1):
        counter1 += 1
    elif ((c in s) for c in chars2):
        counter2 += 1
    print(str(counter2) + "/" + str(counter1))

error_printer(string_1)
Run Code Online (Sandbox Code Playgroud)

python string counting

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

在元组列表中查找具有相同的第一项和第三项的元组计数

我有一个元组列表,每个元组包含三个项目:

z = [(1, 4, 2015), (1, 11, 2015), (1, 18, 2015), (1, 25, 2015), (2, 1, 2015), (2, 8, 2015), (2, 15, 2015), (2, 22, 2015), (3, 1, 2015), (3, 8, 2015), (3, 15, 2015), (3, 22, 2015), (3, 29, 2015), (4, 5, 2015), (4, 12, 2015), (4, 19, 2015), (4, 26, 2015), (5, 3, 2015), (5, 10, 2015), (5, 17, 2015), (5, 24, 2015), (5, 31, 2015), (6, 7, 2015), (6, 14, 2015), (6, 21, 2015), (6, 28, …
Run Code Online (Sandbox Code Playgroud)

python dictionary counting python-3.x pandas

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

如何在不对数组进行排序的情况下计算数组中的整数组?

我的目标是能够计算数组中相同整数的组。例如,在这样的数组中{1, 1, 1, 2, 2, 3, 1, 1},有4个组:

  • 至少1:3组
  • 至少2:1组
  • 至少为3号

我在不对数组进行排序的情况下遇到了问题。当它被排序时,我在数组末尾失去了两个1的组的计数,因为它被放置在其他1的组旁边。

int result = (int) Stream.of(1, 1, 1, 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 4, 4, 4, 6)
        .collect(Collectors.groupingBy(i -> i))
        .entrySet().stream()
        .filter(entry -> entry.getValue().size() >= 1) // specify the size
        .count()

return result;
Run Code Online (Sandbox Code Playgroud)

每种尺寸的预期输出如下:

size 1 count == 8

size 2 count == 5

size 6 count == 1

size 8 count == …
Run Code Online (Sandbox Code Playgroud)

java arrays counting java-stream

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

R中xtabs和aggregate之间na.action的不一致

我有以下 data.frame:

x <- data.frame(A = c("Y", "Y", "Z", NA),
                B = c(NA, TRUE, FALSE, TRUE),
                C = c(TRUE, TRUE, NA, FALSE))
Run Code Online (Sandbox Code Playgroud)

我需要计算下表xtabs:

A      B C
  Y    1 2
  Z    0 0
  <NA> 1 0
Run Code Online (Sandbox Code Playgroud)

我被告知要使用na.action = NULL,它确实返回了我需要的表:

xtabs(formula = cbind(B, C) ~ A,
      data = x,
      addNA = TRUE,
      na.action = NULL)

A      B C
  Y    1 2
  Z    0 0
  <NA> 1 0
Run Code Online (Sandbox Code Playgroud)

但是,na.action = na.pass返回一个不同的表:

xtabs(formula = cbind(B, C) ~ A, …
Run Code Online (Sandbox Code Playgroud)

aggregate r counting na

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

对 Pandas value_counts 进行分箱

我有一个由 df.column.value_counts().sort_index() 生成的 Pandas 系列。

| N Months | Count |
|------|------|
|    0 |   15 |
|    1 |    9 |
|    2 |   78 |
|    3 |  151 |
|    4 |  412 |
|    5 |  181 |
|    6 |  543 |
|    7 |  175 |
|    8 |  409 |
|    9 |  594 |
|   10 |  137 |
|   11 |  202 |
|   12 |  170 |
|   13 | …
Run Code Online (Sandbox Code Playgroud)

python counting bin pandas

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