找到一堆元素的位置

时间:2015-12-03 13:16:09

标签: c++ string performance vector location

我需要找到位置1 2 3 4 5 6 7 8 9 10,它们存储为一个名为' line'的字符串。并保留一个名为' info'的字符串向量。但我的代码在代码中没有任何错误?

string line;
vector<vector<string>>info;
for (int x = 0; x < info.size(); x++)
{
    for (int y = 0; y < info[x].size(); y++)
    {
        for (int i = 0; i <= 10; i++)
        {
            if (info[x][y] == i)
            {
                cout << "row " << x;
                cout << "column " << y;
            }
        }
    }
}

还是更快的替代方法? 告诉我你的代码因为我是编程的新手,很难理解你的解释,谢谢。

2 个答案:

答案 0 :(得分:1)

您正在将intstring进行比较,但不会进行同等比较。你必须将一个转换为另一个

// compare them as strings
if (info[x][y] == std::to_string(i))

// compare them as ints
if (std::stoi(info[x][y]) == i)

答案 1 :(得分:1)

我正在解释你的问题意味着你正在寻找字符串中的数字0到9,例如“abc012efg”。在那种情况下:

    for (int i = 0; i <= 10; i++)
    {
        if (info[x][y] == i)

不幸的是,这个字符串中的字符'0'不是整数0.它是'0',它是ASCII 48,你搜索的字符串不是字符'0'到'9',但对于八位字节0到9,不一样。

这里的第二个错误是你也在搜索数字0到10,而不是0到9.上面的代码片段应该是:

    for (int i = 0; i < 10; i++)
    {
        if (info[x][y] == '0' + i)