变量具有不同的值,具体取决于调用它的函数

时间:2015-09-11 03:37:28

标签: c++ algorithm variables search

我正在编写一个c ++程序来尝试模拟批处理脚本。目前我正在尝试实现一个可变系统。我已经设置了系统所以每次用户创建一个新变量时,它都会被添加到向量中作为变量的名称,逗号,然后是值。我有一些算法设置为通过分隔符(逗号)拆分字符串并返回一个向量,第一个条目是名称,第二个是值。使用这些算法打印名称时,成功打印变量的名称(在本例中为“test”)。但是,试图在线性搜索算法中使用这个相同的变量,变量是“test,123”而不仅仅是“test”。下面是导致此错误的代码。

std::string hugeStr=std::string(strSplitter(std::string(removeChar(std::string(splitCommand[1]), '\%')), ",")[0]);
std::cout<<hugeStr<<std::endl<<std::endl;
int result=linearSearch(varVector, varVector.size(), hugeStr);
std::cout<<result<<std::endl;

以下是搜索算法。

int linearSearch(std::vector<std::string> myVec, int size, std::string searchKey)
{
    for(int i=0; i<size; i++)
    {
        if(searchKey==std::string(myVec[i]))
            return i;
        else{
            std::cout<<myVec[i]<<std::endl;
            return -1;
        }
    }
}

当用户初始化变量时(在这种情况下,名称为“test”,值为“123”),第一个cout语句将打印“test”。但是,线性搜索算法中的cout语句打印“test,123”并返回-1。为什么变量在传递给搜索算法时具有不同的值?

如果需要,可以在github repo找到代码的完整副本。

1 个答案:

答案 0 :(得分:1)

它没有。您正在输出向量中第一个元素的值,而不是您传递给它的searchKey。

你确实意识到这个循环永远不会到达i == 1,对吗?无论如何,它会在检查myVec [0]时返回。