对'Go'来说很新.问题可能是基本问题.
我有两个时间.时间对象,我希望在小时/分钟/秒方面得到两者之间的差异.让我们说:
t1 = 2016-09-09 19:09:16 +0530 IST
t2 = 2016-09-09 19:09:16 +0530 IST
Run Code Online (Sandbox Code Playgroud)
在上面的情况下,因为差异是0.它应该给我00:00:00.考虑另一种情况:
t1 = 2016-09-14 14:12:48 +0530 IST
t2 = 2016-09-14 14:18:29 +0530 IST
Run Code Online (Sandbox Code Playgroud)
在这种情况下,差异将是00:05:41.我查看了https://godoc.org/time但无法做出任何改变.
我想我无法理解为什么这不起作用.我一直以为我可以在构造函数中使用'this'指针,但我从来不知道我不能在初始化列表中使用'this'.
#include <iostream>
class A {
public:
int a;
int b;
A(int a = 0, int b = 0) : this->a(a), this->b(b) { }
void print() {
std::cout << a << ", " << b << std::endl;
}
};
int main() {
A a;
a.print();
}
Run Code Online (Sandbox Code Playgroud)
我很想知道与之相关的细节.
无法理解为什么会失败?
int *p = new int(10);
std::unique_ptr<int> ptr(p);
// Below line gives compilation error.
std::cout << "Value of ptr " << ptr << std::endl;
// Below line works well.
std::cout << "Value pointed ptr " << *ptr << std::endl;
std::cout << "Value of ptr->get() " << ptr.get() << std::endl;
Run Code Online (Sandbox Code Playgroud)
我这样理解:
假设p的地址为100,新分配的内存地址为200.
p new allocated memory
---------- ---------
200 10
---------- ---------
100 200
ptr
----------
200
----------
300
Run Code Online (Sandbox Code Playgroud)
在上面的描述中,unique_ptr指向新分配的内存本身,避免'p'.那么,不应该打印'ptr'给我200?
让我们假设这一小段代码:
#include<iostream>
template <typename T>
class A {
T a;
};
int main() {
A<int> a;
A<char> c;
}
Run Code Online (Sandbox Code Playgroud)
现在,考虑这个代码而不是模板,我有两个单独的int和char类.
#include<iostream>
class A {
int a;
};
class C {
char c;
};
int main() {
A a;
C c;
}
Run Code Online (Sandbox Code Playgroud)
根据程序的编译器,优化或代码段,上述两种方法会有什么不同吗?
在哪种方法中可执行文件的大小会更大?为什么?
虽然这个问题可能在某处得到回答,但我找不到。
下面写的第一条语句有效而第二条语句无效?为什么?
int main() {
int x = 1, y = 2;
int *p = &++x; // First
std::cout << "*p = " << *p << std::endl;
// int *q = &x++; // Second
// std::cout << "*q = " << *p << std::endl;
}
Run Code Online (Sandbox Code Playgroud) c++ unary-operator pre-increment post-increment postfix-operator
我们可以在csh或vim中编写函数/子例程吗?
基本上,我的问题是如何自动削减字符串中的反斜杠,我们在vim中用于搜索.
让我们说:
文件file_a的内容是:
abcd
a/b/c/d
Run Code Online (Sandbox Code Playgroud)
现在,如果我在命令模式下使用"/ abcd"在vim中搜索'abcd',它将匹配abcd(第一行).如果我搜索'a/b/c/d',它将不匹配整个'a/b/c/d'.它只匹配'a/b/c/d'中的'a'.
要匹配整个'a/b/c/d',我需要搜索a\/b\/c\/d.每次要搜索其中包含反斜杠的字符串时,削减反斜杠是一种痛苦.:)
你们有谁早点解决了这个问题吗?
学习'水豚'并陷入通过水豚寻找隐藏元素的问题.
在HTML中,我们有一个文件字段默认为'display:none'.HTML元素是:
<input class="some_class" id="some_id" name="some_name" type="file">
Run Code Online (Sandbox Code Playgroud)
现在,当我用黄瓜在水豚中编写测试用例时,我在我的水豚脚本中找不到这个元素.我的水豚脚本正在找到这样的元素:
find(:xpath, "//input[@name='some_name']")
Run Code Online (Sandbox Code Playgroud)
阅读隐藏的元素,并了解该设置
Capybara.ignore_hidden_elements = false
Run Code Online (Sandbox Code Playgroud)
应该解决我的问题.但我在其他地方读到了上面的设置是默认的.所以,尝试了明确传递它的其他选项.喜欢:
find(:xpath, "//input[@name='some_name']", :visible => false)
Run Code Online (Sandbox Code Playgroud)
那也行不通.还有什么我应该尝试的吗?如果有兴趣的话,很乐意分享更多细节.
考虑到您有两个类,Base和Derived,Derived是从Base公开继承的。
#include <iostream>
struct Base {
public:
unsigned char a;
int b;
Base() : a('a'), b (2) { };
unsigned char get_a() {
return a;
}
int get_b() {
return b;
}
} __attribute__ ((__packed__)) ;
struct __attribute__ ((__packed__)) Derived : public Base {
public:
unsigned char c;
int d;
Derived() : c('c'), d(4) { };
unsigned char get_c() {
return c;
}
int get_d() {
return d;
}
};
Run Code Online (Sandbox Code Playgroud)
我正在做一些实验,这些是发现/问题。
首先,您不能在继承链中仅打包一个类。您必须打包链中的所有东西,否则就什么也没有。
其次,打包后,两个类的内存彼此相邻。首先是Base的内存,然后是Derived的内存。例如,Derived的内存布局将是:Base的5个字节,然后Derived的下5个字节。是肯定/正确的吗?
第三,这与我的工作和IMO一个有趣的问题有关。在我的流程中,直到确定的一点,我需要使用基类指针,并且在该特定指针之后,可以通过执行mem_copy或其他操作将所有基类指针转换为派生类指针。当然,我会添加“派生成员”的必要值。我怎样才能做到这一点?
要解决第三个问题,您将建议什么方法?如果没有虚拟,则由于虚拟会向内存增加4/8字节。
我知道如何使用三种颜色(黑色、白色和灰色)机制来检测图表中的循环。对于那些不知道这一点的人,请按照以下步骤操作: http://www.geeksforgeeks.org/detect-cycle-direct-graph-using-colors/
简而言之,白色节点是未发现的节点,灰色是正在处理的节点,黑色节点是已发现的节点。
几天前,一位资深人士问我为什么需要三种颜色才能达到这一目的。为什么我们不能只用黑白来做到这一点?为什么真正需要灰色节点?可惜我能回答他这个问题。你们谁能告诉我他是在问我一个有效的问题还是只是在测试我?
我想知道 C++ 中是否有一些可用的东西可以帮助我们在使用auto. 比如说,我想将一个数组元素与所有其他元素进行比较。我们传统上是这样做的:
std::vector<int> vec {1, 2, 3, 4};
for (int i = 0; i < vec.size(); ++i)
{
for (int j = i + 1; j < vec.size(); ++j)
{
if (vec[i] == vec[j]) {}
// Compares 1 with 2, 3 and 4
// Compares 2 with 3 and 4
}
}
Run Code Online (Sandbox Code Playgroud)
目的是auto为了达到这个目的而使用。
std::vector<int> vec{1, 2, 3, 4};
for (<auto>& i : vec)
// ^^^^^^^
{
// What should I write here so that …Run Code Online (Sandbox Code Playgroud)