小编moh*_*hit的帖子

我们可以将部分向量作为函数参数发送吗?

我正在使用vectorc ++程序(我是初学者).
我需要发送一部分vector功能.

如果是c我需要这样做(使用数组):

int arr[5] = {1, 2, 3, 4, 5};
func(arr+2);    //to send part array {3, 4, 5}
Run Code Online (Sandbox Code Playgroud)

除了vector用最后一部分创建一个新的方法之外还有其他方法吗?

c++ vector

16
推荐指数
3
解决办法
9726
查看次数

如何有效地检索数字的第一个十进制数字

一个明显的解决方案是

int n = 2134;
while(n > 9)
    n /= 10;
Run Code Online (Sandbox Code Playgroud)

这需要线性时间.我们可以做得更快吗?

这比线性时间快吗:

char s[100];
sprintf(s, "%d", n);
n = s[0]-'0';
Run Code Online (Sandbox Code Playgroud)

其他方式是什么(效率是首要考虑因素)?
我见过这个,除了我只需要找到第一个数字.(另外,我不明白答案).

c c++ algorithm

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

算法简介,练习10.2-4

这是练习" 算法导论"第3版的问题:(我知道这是一个微不足道的问题,但我无法理解这一点.)

第10章,第240页:

10.2-4

如上所述,LIST-SEARCH过程中的每个循环迭代都需要两个测试:一个用于x != L.nil,一个用于x.key != k.演示如何x != L.nil在每次迭代中消除测试.

LIST-SEARCH(L, k)
  x = L.nil.next
  while x != L.nil and x.key != k
    x = x.next
  return x
Run Code Online (Sandbox Code Playgroud)

L是带有哨兵的圆形双链表.(sentinel是起始中的固定静态元素,有助于简化边界条件.例如,假设我们为list提供了L一个对象L.nil,该对象表示NIL但具有列表中其他对象的所有属性.)

除非k您搜索始终存在,否则简单删除x != L.nil将导致无限次迭代.

您可以将此表达式转换x != L.nil为其他表达式(例如列表中元素的数量),但我认为这不是解决方案.

我在解决这个问题时缺乏什么?

algorithm

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

如何设计一些常量是否由多个类使用

我几个常用的常量被多个类使用.

在这种情况下,最有效的设计方法是什么:

  1. 我应该重新定义每个班级的常数吗?
  2. 或者我应该在公共类中分离这些常量,并在每个类中使用常量(在单独的类中)?

或者还有其他更好的方法吗?

注意: -我正在寻找适用于此的最佳OO技术.

java

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

项目欧拉#14

我目前正在解决,Project Euler问题14:

为正整数集定义以下迭代序列:

n ? n/2 (n is even)
n ? 3n + 1 (n is odd)  

Using the rule above and starting with 13, we generate the following sequence:
               13 ? 40 ? 20 ? 10 ? 5 ? 16 ? 8 ? 4 ? 2 ? 1  

Which starting number, under one million, produces the longest chain?
Run Code Online (Sandbox Code Playgroud)

我设计了以下算法来解决问题:

  • 我不是单独为每个数字找到系列,而是包含大量冗余计算,而是尝试从1开始向后发展系列.也就是说,从数字开始并预测它之前的元素.
  • 由于可以生成多个系列,因此使用链接列表存储所有系列的最近数量.(我们的想法是只存储那些具有更长系列的元素.)
  • 我将循环这个,直到我找到给定限制下的所有数字; 限制下的最后一个数字将是最长的系列.

这是我的代码:

void series_generate(long num)
{
    long n = 1;
    addhead(n);             //add 1 to list. …
Run Code Online (Sandbox Code Playgroud)

c

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

僵尸进程的父进程终止后会发生什么?

我只是好奇,僵尸进程会发生什么,如果它的父母不在乎等待它.

假设,我们有一个父母和一个孩子.孩子在父母之前终止.

来自APUE:

内核为每个终止进程保留少量信息......最小的
信息包括进程ID,进程的终止状态....

父级需要使用获取此信息waitpid().
但如果,父母退出而不等孩子,会发生什么:

内核是否删除了这些信息(当然没有用)?
或者,它一直收集这个垃圾?
这个实现是否具体?
或者,有没有一种标准的方法来处理这种情况?

c linux zombie-process

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

推,弹,范围恒定时间

我在接受采访时被问到这个问题:

设计一个数据结构,允许所有这些操作保持不变O(1),时间:

  • 推一个元素
  • 弹出一个元素
  • 元素范围:查找当前元素的最小间隔范围.
    例如.范围[1, 22, 44, 56, 99, 98, 56]98.

我设计的这个使用定制的堆栈两个变量,max并且min,但这并不Pop'ing一个最小或最大元素之后的工作.

我尝试了什么:

我使用了一个带有两个额外变量max和min的堆栈:

DS 
{
 top, //Top of the Stack 
 min, //Min till now
 max  //Max till now
}

Push(DS, elem)
  Push_Stack(DS.top, elem)
  if elem < DS.min
    DS.min = elem
  if elem > DS.max
    DS.max = elem

Range(DS)
 return DS.max - DS.min

Pop(DS)
  x = Pop_Stack(DS.top)
  if (x == DS.min)
    DS.min = Find_New_Min(DS.top) //This takes linear time using …
Run Code Online (Sandbox Code Playgroud)

algorithm data-structures

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

返回文件从其他函数本地分配的文件描述符是否安全在C中

#include <stdio.h>
#include <string.h>

FILE * BestTry();

int main()
{
    char arr[] = "hello";
    FILE * desc = BestTry();
    fwrite(arr,1,5,desc);
    fclose(desc);
}

FILE * BestTry()
{
    FILE * retDesc = fopen(".\\hello.dat","w+");
    return retDesc;
}
Run Code Online (Sandbox Code Playgroud)

是否可以安全地desc用于任何用途,因为我正在为函数中的局部变量分配内存BestTry.如果它是安全的那么原因是什么?

c

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

是否在fork之后由child创建了文件,也与父共享?

我知道之后fork(),父母打开的所有文件(及其偏移)
都由孩子共享.也就是说,共享所有文件的文件表条目.

如果孩子打开一些文件会发生什么.它是针对孩子的吗?或者由父母共享?

我也写过小测试程序.这是测试这个的正确方法吗?

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

#define FLAG (O_RDWR | O_CREAT | O_TRUNC)

int main(int argc, char *argv[])
{
    pid_t pid;

    if ((pid = fork()) < 0) {
        perror("fork error");
        exit(1);
    } else if (pid == 0) {
        int fc;
        if ((fc = open("abc", FLAG)) == -1) {
            perror("cannot open abc");
            exit(-1);
        }
        exit(fc); …
Run Code Online (Sandbox Code Playgroud)

c unix linux fork

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

迭代地使用sscanf解析字符串输入

我有一个由空格分隔的数字组成的输入字符串,如"12 23 34".
输出应该是整数数组.

我尝试了以下方法:

while (sscanf(s, "%d", &d) == 1) {
    arr[n++] = d;
}
Run Code Online (Sandbox Code Playgroud)

但我发现因为我没有从文件中读取(自动调整偏移量),
所以我d每次都会保存相同的数字.

然后我尝试了这个:

while (sscanf(s, "%d", &d) == 1) {
    arr[n++] = d;
    s = strchr(s, ' ');
}
Run Code Online (Sandbox Code Playgroud)

手动s切换到新号码.
我认为应该可以正常工作.我根本不明白它失败的原因.

c scanf

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

在 for 循环中使用模拟对象列表获取 NullPointerException

要模拟的函数是类NegotiateNode

protected String getAttributeValueFromNodeOfServiceType(String serviceType, String attributeName) {
    String attributeValue = null;

    for (Node node : this.getListOfNodes()) {
        if (node.getServiceType().equals(serviceType)) {
            attributeValue = node.getAttribute(attributeName);
            break;
        }
    }

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

这是测试:

@Mock private NegotiateNode mockN;
@Mock private Node mockNode;
private List<Node> mockListOfNodes = Arrays.asList(mockNode, mockNode, mockNode);

@Before
public void setup() throws Exception
{
     when(mockN.getListofNodes()).thenReturn(mockListofNodes);  
}

@Test
public void getAttributeValueFromNodeOfServiceType_ServiceTypeExists_ReturnAttribute() {

     when(mockNode.getServiceType()).thenReturn("PMN", "AMC", "SMC");
     when(mockNode.getAttribute(anyString()).thenReturn("mockedValue");

     when(NegotiateNode.getAttributeValueFromNodeOfServiceType(anyString(), anyString())).thenCallRealMethod();

     assertEquals("mockedValue", mockN.getAttributeValueFromNodeOfServiceType("AMC", "dummyAttribute"));

}
Run Code Online (Sandbox Code Playgroud)

我正在NullPointerException运行这个测试。原因是在 node 的 for 循环内部值为null …

java junit mockito

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

p4 describe需要等效的python命令

p4 describe #cl在p4 python中我需要等效的.

但是,p4.run_describe("#cl")使用p4python 运行相同的命令.我得到了dict:

[{'client': 'NonDev1408-Dev', 'digest': ['E41FFB100C73F7B443EE8DE7A0DD966C'], 'desc': 'Merging //ATTE/1507_SWP122 to OCX Main (//ATTE/1408-Dev)\n', 'type': ['text'], 'fileSize': ['33067'], 'status': 'submitted', 'rev': ['49'], 'depotFile': ['//ATTE/1408-Dev/cust/oms/bb/cord9src/src/main/java/amdocs/oms/cust/osact/foundation/NegotiateServiceConnection.java'], 'action': ['integrate'], 'user': 'mohitc', 'change': '243446', 'time': '1432731112', 'path': '//ATTE/1408-Dev/cust/oms/bb/cord9src/src/main/java/amdocs/oms/cust/osact/foundation/*', 'changeType': 'public'}]
Run Code Online (Sandbox Code Playgroud)

相反,我希望输出像这样p4 describe 243446,我想在受影响的文件之间进行差异更改:

Change 243446 by mohitc@NonDev1408-Dev on 2015/05/27 15:51:52

        Merging //ATTE/1507_SWP122 to OCX Main (//ATTE/1408-Dev)

Affected files ...

... //ATTE/1408-Dev/cust/oms/bb/cord9src/src/main/java/amdocs/oms/cust/osact/foundation/NegotiateServiceConnection.java#49 integrate

Differences ...

==== //ATTE/1408-Dev/cust/oms/bb/cord9src/src/main/java/amdocs/oms/cust/osact/foundation/NegotiateServiceConnection.java#49 (text) ====
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以使用p4python生成相同的输出?

python perforce p4python

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

运行我的简单代码时出现ArrayIndexOutOfBoundException

我写了一个简单的代码来手动理解传递值,有我的代码

public class coba{
    public static void main (String[] args){
        int a;
        int b;
        a= Integer.parseInt(args [0]);
        b= Integer.parseInt(args [1]);

        int c=0;
        c= a+b;
        System.out.println("jumlah "+c);
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我得到ArrayIndexOutOfBoundException ?? 以及如何解决这个问题,以便我可以手动传递a和b的值?谢谢你的回答 :)

java

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