我正在使用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用最后一部分创建一个新的方法之外还有其他方法吗?
一个明显的解决方案是
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)
其他方式是什么(效率是首要考虑因素)?
我见过这个,除了我只需要找到第一个数字.(另外,我不明白答案).
这是练习" 算法导论"第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为其他表达式(例如列表中元素的数量),但我认为这不是解决方案.
我在解决这个问题时缺乏什么?
我几个常用的常量被多个类使用.
在这种情况下,最有效的设计方法是什么:
或者还有其他更好的方法吗?
注意: -我正在寻找适用于此的最佳OO技术.
我目前正在解决,Project Euler问题14:
为正整数集定义以下迭代序列:
Run Code Online (Sandbox Code Playgroud)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?
我设计了以下算法来解决问题:
这是我的代码:
void series_generate(long num)
{
long n = 1;
addhead(n); //add 1 to list. …Run Code Online (Sandbox Code Playgroud) 我只是好奇,僵尸进程会发生什么,如果它的父母不在乎等待它.
假设,我们有一个父母和一个孩子.孩子在父母之前终止.
来自APUE:
内核为每个终止进程保留少量信息......最小的
信息包括进程ID,进程的终止状态....
父级需要使用获取此信息waitpid().
但如果,父母退出而不等孩子,会发生什么:
内核是否删除了这些信息(当然没有用)?
或者,它一直收集这个垃圾?
这个实现是否具体?
或者,有没有一种标准的方法来处理这种情况?
我在接受采访时被问到这个问题:
设计一个数据结构,允许所有这些操作保持不变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) #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.如果它是安全的那么原因是什么?
我知道之后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) 我有一个由空格分隔的数字组成的输入字符串,如"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切换到新号码.
我认为应该可以正常工作.我根本不明白它失败的原因.
要模拟的函数是类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 …
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生成相同的输出?
我写了一个简单的代码来手动理解传递值,有我的代码
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的值?谢谢你的回答 :)