小编gny*_*his的帖子

生成2d向量中的所有元素组合

可能重复:
如何创建向量矢量的笛卡尔积?

我有一些逻辑问题,想出如何在二维矢量中生成元素的所有组合.在这里,我创建了一个2D矢量.两个维度的大小都不能假设.

#include <iostream>
#include <vector>

using namespace std;

int main() {
  srand(time(NULL));
  vector< vector<int> > array;

  // This creates the following:
  // array[0]: {0, 1, 2} 
  // array[1]: {3, 4, 5, 9} 
  // array[2]: {6, 7, 8} 
  for(int i=0; i<3; i++) { 
    vector<int> tmp;
    tmp.push_back((i*3)+0); tmp.push_back((i*3)+1); tmp.push_back((i*3)+2);
    if(i==1)
      tmp.push_back((i*3)+6);
    array.push_back(tmp);
  }
}
Run Code Online (Sandbox Code Playgroud)

创建向量后,我想输出所有可能的组合,如下所示:

  comb[0] = {0, 3, 6}
  comb[1] = {0, 3, 7}
  comb[2] = {0, 3, 8}
  comb[3] = {0, 4, 6}
  comb[4] = {0, 4, 7} …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm combinations

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

无法链接到嵌入式系统上的 gettimeofday,已用时间建议?

我试图在嵌入式 ARM 设备上使用 gettimeofday,但似乎我无法使用它:

gnychis@ubuntu:~/Documents/coexisyst/econotag_firmware$ make
Building for board: redbee-econotag
       CC obj_redbee-econotag/econotag_coexisyst_firmware.o
LINK (romvars) econotag_coexisyst_firmware_redbee-econotag.elf
/home/gnychis/Documents/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none- eabi/4.3.2/../../../../arm-none-eabi/lib/libc.a(lib_a-gettimeofdayr.o): In function `_gettimeofday_r':
gettimeofdayr.c:(.text+0x1c): undefined reference to `_gettimeofday'
/home/gnychis/Documents/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.3.2/../../../../arm-none-eabi/lib/libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text+0x18): undefined reference to `_sbrk'
collect2: ld returned 1 exit status
make[1]: *** [econotag_coexisyst_firmware_redbee-econotag.elf] Error 1
make: *** [mc1322x-default] Error 2
Run Code Online (Sandbox Code Playgroud)

我假设我不能使用 gettimeofday() ?有没有人有任何建议能够告诉经过的时间?(例如,100 毫秒)

c embedded arm gettimeofday

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

在交叉编译Android时链接到libgcc.a时出错,但是符号存在?

我试图交叉编译的Android一个非常简单的程序,工作有Android NDK-R 6b和R之前,但并没有对Android的NDK-R7和新的工作:

int main() {
  ;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我可以在旧版Android上使用"agcc"脚本来实现,可以在这里找到.我真诚地不想使用Android.mk文件来构建它.我知道我可以,但这是我正在努力的更大的事情的一部分.所以把它作为面值,我试图以不同的方式交叉编译它.

无论如何,我尝试构建并得到:

$ arm-eabi-gcc -o test test.c
/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/ld: warning: /tmp/cc00QD3x.o uses variable-size enums yet the output is to use 32-bit enums; use of enum values across objects may fail
/tmp/cc00QD3x.o:(.ARM.exidx.text.main+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

因此,关键错误是对__aeabi_unwind_cpp_pr0的未定义引用.

在做了一些挖掘之后,这个符号在libgcc.a中,我链接到:

$ arm-eabi-nm /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/libgcc.a | grep __aeabi_unwind_cpp_pr0
         U __aeabi_unwind_cpp_pr0
         U __aeabi_unwind_cpp_pr0
         U __aeabi_unwind_cpp_pr0
         U __aeabi_unwind_cpp_pr0
         U __aeabi_unwind_cpp_pr0
         U __aeabi_unwind_cpp_pr0
         U __aeabi_unwind_cpp_pr0
00000590 T …
Run Code Online (Sandbox Code Playgroud)

linker android gcc cross-compiling android-ndk

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

更好的写作方式:a = b如果a是None,则a

我在Python中反复使用的一个非常常见的句子感觉"太长了",我希望有更多的Pythonic方法来编写它:

a = b if a is None else a
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来写这个?

python

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

在这种情况下,什么时候在我的类实例上调用finalize()?

我知道每当垃圾收集器收集一个类实例时都会调用finalize().但是,当通过队列将类的实例传递给另一个线程时,我有点困惑.

假设这是Thread1的骨架:

for(i=0; i<1000; i++) {
   Packet pkt = new Packet();  // instance of class
   pkt.id = i;
   thread2.queue.put(pkt);
}
Run Code Online (Sandbox Code Playgroud)

然后,线程2将从队列中删除数据包并执行冗长的操作.这第二个线程是否获得了数据包的"副本",还是通过某种形式的引用?重要的是,如果是通过复制,则可以在线程2完成数据包之前调用在线程1中创建的实例上的finalize().如果是引用,我保证只对包中的信息调用finalize()一次.

这个基本示例可能没有显示重要性,但是我在数据包中存储了一个C指针(来自JNI)以在完成对象时销毁一些内存.如果它是通过副本传递的,则内存可能会在第二个线程完成之前被销毁.如果它是通过引用传递的,那么它应该只在GC看到它不再被两个线程使用时被销毁(我想要的行为).如果后一种情况得不到保证,我不会使用finalize()并使用其他东西,但会更复杂.

java garbage-collection finalize pass-by-reference

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

帮助理解堆栈跟踪:"#0 0x00000000 in ??()"

我正在尝试调试使用本机C代码的Android应用程序.我能够设置GDB并获得我的segfaulting的堆栈跟踪.我理解堆栈跟踪直到最顶层的项目:

#0  0x00000000 in ?? ()
#1  0x84601920 in fvalue_set (fv=0xe262c0, value=0x494530cc, already_copied=0) at ftypes.c:422
#2  0x845eaae8 in proto_tree_new_item (new_fi=0xe262c0, tree=<value optimized out>, tvb=0xe29080, start=14, length=11, encoding_arg=0) at proto.c:1429
#3  0x845eb2f8 in proto_tree_add_item (tree=<value optimized out>, hfindex=<value optimized out>, tvb=0xe29080, start=14, length=11, encoding=0) at proto.c:1760
#4  0x84a163dc in add_tagged_field (pinfo=<value optimized out>, tree=0xe245b8, tvb=0xe29080, offset=<value optimized out>) at packet-ieee80211.c:6272
#5  0x84a18e74 in ieee_80211_add_tagged_parameters (tvb=0xe29080, offset=12, pinfo=0x10f8978, tree=0xe24588, tagged_parameters_len=190) at packet-ieee80211.c:7914
#6  0x84a19094 in dissect_ieee80211_mgt (fcf=<value optimized out>, tvb=0xe29080, pinfo=0x10f8978, tree=0xe21dc0) …
Run Code Online (Sandbox Code Playgroud)

c debugging gdb stack-trace android-ndk

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

警告:"对于长类型,整数常量太大了"......但是它是一个uint64_t?

我正在努力将libbtbb交叉编译到Android,我收到大量警告说:

jni/libbtbb/bluetooth_packet.h:67: warning: integer constant is too large for 'long' type
Run Code Online (Sandbox Code Playgroud)

但是,当我深入研究文件时,这指向了这一行:

static const uint64_t sw_matrix[] = {
    0xfe000002a0d1c014, 0x01000003f0b9201f, 0x008000033ae40edb, 0x004000035fca99b9,
    0x002000036d5dd208, 0x00100001b6aee904, 0x00080000db577482, 0x000400006dabba41,
    0x00020002f46d43f4, 0x000100017a36a1fa, 0x00008000bd1b50fd, 0x000040029c3536aa,
    0x000020014e1a9b55, 0x0000100265b5d37e, 0x0000080132dae9bf, 0x000004025bd5ea0b,
    0x00000203ef526bd1, 0x000001033511ab3c, 0x000000819a88d59e, 0x00000040cd446acf,
    0x00000022a41aabb3, 0x0000001390b5cb0d, 0x0000000b0ae27b52, 0x0000000585713da9};
Run Code Online (Sandbox Code Playgroud)

类型是uint64_t,而不是"long"......但它似乎指的是指定常量,如0xfe000002a0d1c014.在这种情况下,我不确定应该如何指定它,或者我是否可以忽略这些警告.

c android types android-ndk

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

如何使方法参数类型ArrayList <Object>采用不同的对象类型

我有一个抽象方法作为抽象类的一部分,具有以下声明:

abstract public ArrayList<Device> returnDevices(ArrayList<Object> scanResult);
Run Code Online (Sandbox Code Playgroud)

我希望传递的参数是一个ArrayList,但ArrayList中的类型对象将依赖于继承此超类并实现方法returnDevices的子类.

我认为我可以通过如上所述使方法抽象来实现这一点,然后在继承它的子类中执行以下操作:

public ArrayList<Device> returnDevices(ArrayList<Object> scanResult) {

    Iterator<Object> results = scanResult.iterator();
    while(results.hasNext())
        Packet pkt = (Packet) results.next();  // HERE: I cast the Object
}
Run Code Online (Sandbox Code Playgroud)

这很好,不会导致错误,但是当我尝试使用类型的参数调用returnDevices时ArrayList<Packet>,如下所示:

ArrayList<Packet> packets = new ArrayList<Packet>();
// <----- the "packets" ArrayList is filled here
ArrayList<Device> devices = returnDevices(packets);
Run Code Online (Sandbox Code Playgroud)

......我收到错误:

The method returnDevices(ArrayList<Object>) in the type ScanResultParser is not applicable for the arguments (ArrayList<Packet>)
Run Code Online (Sandbox Code Playgroud)

很明显它拒绝参数类型.实现我想做的事情的正确方法是什么?

java abstract

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

zlib构建无法与交叉编译器正确配置,会忽略AR?

我正在尝试使用crosstool-ng及其生成的编译器为ARM处理器交叉编译zlib arm-linux-gnueabihf-gcc。我将CC变量设置为使用交叉编译器以及ARRANLIB,然后./configure按如下所示运行它们:

CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar RANLIB=arm-linux-gnueabihf-ranlib LDSHARED="arm-linux-gnueabihf-gcc -shared -Wl,-soname,libz.so.1" ./configure --shared --prefix=/usr
Run Code Online (Sandbox Code Playgroud)

问题是它吐出了一个Makefile没有AR设置的变量,而是AR设置为libtool,该变量用于我的本机Mac计算机。这是Makefile设置的内容:

AR=libtool
ARFLAGS=-o
RANLIB=ranlib
Run Code Online (Sandbox Code Playgroud)

我可以手动编辑Makefile并进行更改AR=arm-linux-gnueabihf-arARFLAGS=rcs从而修复了构建问题。但这对我来说是一个hack。这是配置脚本:

http://pastebin.com/trmJbPKb

有人看到我运行configure命令的方式有问题吗?

makefile zlib configure cross-compiling

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

找不到我的Entity Framework数据库

我对代码第一实体框架数据库有点困惑.

我创建了一个新的DbContext和类,我将在该上下文中存储,如下所示:

namespace MyProject.Subproject.Something
{
    public class MyItem
    {
        public string One { get; set; }
        public string Two { get; set; }
        [Key]
        public string Three { get; set; }
        public string Four { get; set; }
    }

    public class MyAppData : DbContext
    {
        public DbSet<MyItem> MyItems { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道它有效,因为我能做到这一点而不会失败:

var db = new MyAppData();
MyItem i = new MyItem();
// ... fill in item
db.MyItems.Add(i);
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

此外,如果我重新启动应用程序,我发现db.MyItems.Count()反映项目实际上是持久存储在某个地方.

我假设这是存储的,localdb因为我没有设置SQL Server数据库.我想要做的就是在localdb …

.net c# entity-framework

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