private HashMap<DataObject, HashSet> AllDataObjects;
...
/** Returns all DataObject elements that are NOT in the specified set. */
private DataObject[] invert( HashSet<DataObject> set )
{
HashSet<DataObject> keys = (HashSet) AllDataObjects.keySet();
keys = (HashSet) keys.clone();
keys.removeAll( set );
return (DataObject[]) keys.toArray();
}
Run Code Online (Sandbox Code Playgroud)
请注意,我不想改变AllDataObjects这个过程.我将一组AllDataObjects'键(DataObject我希望set参数减去)转换为HashSet以使用clone,它应该返回一个浅拷贝,然后我可以删除它set而不会影响AllDataObjects.
这看起来对你好吗?
我正在寻找一个很好的解释为什么(不知道如何,我知道)二进制减法总是(?)通过添加补码等来完成.是仅仅因为额外的逻辑门是必要的还是有额外的,更多复杂的原因?例如,我可以理解,如果结果是否定的话会有问题 - 表示可能必须改变.你能想到更多的理由吗?
我有三列的表:taxon_id,scientific_name_element_id,和parent_id.我想找到孩子而不是父母的元素,所以结构的终点.
我找到了一些建议我使用的消息来源
select taxon_id
from taxon_name_element
where taxon_id not in
(select parent_id from taxon_name_element)
Run Code Online (Sandbox Code Playgroud)
但这不起作用,当我能够实际浏览条目并看到有例如a taxon_id=1和NO 时,我得到一个空集.parent_id=1
相反,当我看到parent_id中的taxon_id是什么时,我得到一个非空的结果集
我究竟做错了什么?我怎样才能解决这个问题?
我需要帮助使用2的表示法减去二进制,并为每个数字使用5位:
1)-9 -7 =?有溢出吗?
-9 = 01001(2的补码= 10111)和-7 = 00111(2的补码= 11001)
现在我们需要添加因为我们正在使用2的补码
10111 +11001 = 100000但这个答案没有意义.此外,我假设有溢出,因为答案中有超过5位.
2)6 - 10,与以前相同的过程.负二进制数对我没有意义
我知道python中不支持减去列表,但是有一些方法可以省略两个列表之间的公共元素.但我想要做的是用一个列表中的相应元素分别减去一个列表中的每个元素,并将结果作为输出列表返回.我怎样才能做到这一点?
A = [3, 4, 6, 7]
B = [1, 3, 6, 3]
print A - B #Should print [2, 1, 0, 4]
Run Code Online (Sandbox Code Playgroud) 我有这个字符串列表:
x = ['+27', '05', '1995 F']
Run Code Online (Sandbox Code Playgroud)
我想要一些代码输出:
['+', '27', '05', '1995', 'F']
Run Code Online (Sandbox Code Playgroud)
我正在考虑.split()在最后一个元素上使用该函数,所以我编写了这段代码:
x=['+27', '05', '1995 F']
x[2]=x[2].split()
Run Code Online (Sandbox Code Playgroud)
这输出:
['+27', '05', ['1995', 'F']]
Run Code Online (Sandbox Code Playgroud)
如何确保第二个元素不是子列表,而是输出这个?
['+27', '05','1995','F']
Run Code Online (Sandbox Code Playgroud)
我应该使用insert和del?
我用第一个元素写了这个insert和del:
x=x.split("/")
x.insert(0,x[0][0])
x.insert(1,x[1][1:])
del x[2]
Run Code Online (Sandbox Code Playgroud)
这输出:
['+', '27', '05', '1995 F']
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
我正在尝试创建一个vector<string>与其迭代器类似的类和另一个类(仅作为C++ Primer的练习(对于那些感兴趣的人练习14.28)).迭代器类的工作原理是使用一个vector<string>::size_type成员(称为curr)来表示向量的索引.我不想粘贴整个作品,因为它很长,但在尝试为迭代器定义我自己的减法运算符时,我已达到某种程度的混乱.最终它应该像减去两个迭代器一样工作,并在必要时产生负值.我有这样定义的函数:
??? operator-(const iterator& lhs, const iterator& rhs){
return (lhs.curr - rhs.curr);
}
Run Code Online (Sandbox Code Playgroud)
或者,另一个版本的混乱;
#include <vector>
#include <string>
#include <iostream>
using namespace std;
int main(){
vector<string>::size_type x = 5, y = 3;
??? z = (y-x); //what should ??? be if I want -2?
cout << z;
}
Run Code Online (Sandbox Code Playgroud)
(y-x)-2但它当然是回绕到,4294967294因为它是一个32位无符号表达式,然后将其存储在z中.我无法弄清楚如何定义我的返回类型,以便如果rhs(y)在序列中比lhs(x)更远,则返回正确的负值(存储在z中).
我想vector<string>::difference_type可能会做那个技巧,但我发现它size_type代表一个32位无符号整数,而difference_type代表一个32位有符号整数,所以有一个错误的包含有符号整数,这是未定义的行为 - 即使在我的电脑上它产生正确的结果.我可以static_cast一切long long int并返回long long int,但我觉得这将是一个有点太野蛮强迫.
我试图找到两个变量之间的内存距离.具体来说,我需要找到char []数组和int之间的距离.
char data[5];
int a = 0;
printf("%p\n%p\n", &data[5], &a);
long int distance = &a - &data[5];
printf("%ld\n", distance);
Run Code Online (Sandbox Code Playgroud)
当我在没有最后两行的情况下运行我的程序时,我得到了两个变量的正确内存地址,如下所示:
0x7fff5661aac7
0x7fff5661aacc
Run Code Online (Sandbox Code Playgroud)
现在我明白了,如果我没错,两者之间有5个字节的距离(0x7fff5661aac8,0x7fff5661aac9,0x7fff5661aaca,0x7fff5661aacb,0x7fff5661aacc).
为什么我不能减去类型(int*)和类型(char*)之一的指针.两者都是指内存地址..我该怎么做才能计算两者之间的距离,以字节为单位?我尝试了两个指针中的一个,但它没有用.
我得到:" 错误:'char*'和'int*'不是兼容类型的指针 ".谢谢大家都会帮助我
df_1
product_name amount price
a 1 1
b 2 2
c 3 3
d 4 4
df_2
product_name amount
a 1
b 2
Run Code Online (Sandbox Code Playgroud)
这是熊猫中两个数据框的示例。
我希望把它减去amount与product_names
类似a产品将是amount0,b产品也达0 ...与product_name列的值。
谢谢你的时间