搜索向量
Searching through a vector
我有一个向量,vector<Gate*> PI_Gates
,可以包含字符 0、1、D、D'(D NOT( 和 X。以下是我到目前为止所做的事情的一个例子:
if(GateType== GATE_NAND)
{
for(int i=0; i<PI_Gates.size(); i++)
{
if(PI_Gates[i]->getValue() == LOGIC_DBAR)
{
MyGate->setValue(LOGIC_D);
}
else if(PI_Gates[i]->getValue() == LOGIC_ZERO)
{
MyGate->setValue(LOGIC_ONE);
}
else if(PI_Gates[i]->getValue() == LOGIC_X)
{
MyGate->setValue(LOGIC_X);
}
else if(PI_Gates[i]->getValue() == LOGIC_ONE)
{
}
}
此代码用于在门级分析电路并输出结果。对于输入值为 D、0 或 X 的情况,我的输出在当时确定,因为它们将具有逻辑优先级。但是,对于这个特定的逻辑门,如果我的所有输入都是逻辑 1,那么我的输出将是逻辑零。同样,当所有输入都是逻辑 D 时,我的输出将是逻辑 D 而不是。如果输入是逻辑 1 和逻辑 D 的组合,则输出仍然是逻辑 D,而不是逻辑。因此,我需要找到一种方法来搜索我的向量并确定我的输入是否如下:所有逻辑 1、所有逻辑 D、逻辑 1 和 D 的组合。这就是我被困住的地方。我想不出一个好的方法。
我想我是一个更简单的术语,就像你有一个包含数字 1、2、3、4 和 5 的向量,你想检查所有值是 4 还是 5,如果是,当你完成迭代时做一些操作向量。解决方案可能很简单,但我认为我在脑海中将其复杂化了。
提前谢谢。
对于您正在做的事情,一个简单的查找就可以了:
const std::string valid_values[] =
{ "0", "1", "D", "/D" /* D Not */, "X"};
//...
std::string * const end_ptr = &valid_values[sizeof(valid_values)];
const std::string value = PI_Gates[i]->getValue();
size_t position = find(&valid_values[0], // begin
end_ptr, // End
value);
if (position != end_ptr)
{
// The gate name was found
MyGate->setValue(value);
}
如果你想要更多的多功能性,你可以使用std::map<string, function pointer>
并将函数与门名相关联。 包含门名称和函数指针的结构表也可以工作。
相关文章:
- 向量上的线性搜索
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- 哪个更快:在 1d 向量中按字符串搜索还是在 2d 向量中按向量搜索?
- C++:使用类在向量中搜索特定元素时,我得到了错误的结果
- 搜索并替换结构向量中的值
- 我可以做些什么来改进指针向量中的此搜索?
- 迭代向量以获得搜索功能
- 有没有办法搜索向量的元素,<String>然后检查它是否包含特定的字符,如果它确实打印了它
- 如何二进制搜索结构向量并在适当的索引处插入
- 按类型排序向量并按类型或派生类型搜索
- 如何在 c++ 中对两个向量进行线性搜索?
- 从整数向量向量搜索整数向量的最佳算法
- 在结构向量中搜索一个数据成员,然后打印匹配的所有数据成员
- 用户输入字符串的结构的搜索向量
- 如何在向量上进行二进制搜索以找到具有特定id的元素
- 如何在使用和无发现的情况下使用和不使用的字符串向量搜索元素
- 如何通过对象向量搜索匹配项
- 使用C++-AMP来减少未排序向量搜索的运行时间
- 通过 unique_ptr 的向量搜索的查找函数的返回值
- 对象的向量搜索未来对象的使用?