gpt4 book ai didi

c++ - std::vector.size() 不工作

转载 作者:行者123 更新时间:2023-11-30 03:08:20 25 4
gpt4 key购买 nike

我有一些涉及 vector 的代码,但它拒绝给我 vector 的大小:

using namespace std;

struct key_stat{
string USER, url;
float click_count, post_count, click_cost, post_cost;
keyword_stat(): USER("") {}
};

class key
{
private:
string word;
vector <key_stat> stats;
public:
key(string & kw);
vector <key_stat> get_stats(){return stats;}

};


// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void search(string & word, vector <key> & keys){
unsigned int x;
// getting the x value
for (x = 0; x < keys.size(); x++){
if (keys[x].get_word() == word)
break;
}
vector <keyword_stat> t = keys[x].get_stats();
t.size()
}

这不起作用:

t.size(); 

有什么原因吗?

最佳答案

vector 的 operator[]不做边界检查。所以,这是发生了什么:

for (x = 0; x < keywords.size(); x++){
if (keywords[x].get_word() == word)
break;
}

如果找不到您的 word在关键字 vector 中,x将是关键字的大小。

vector <keyword_stat> t = keywords[x].get_stats();

一次一个:keywords[x]现在读取超出 vector 末尾的内容,返回垃圾。 .get_stats()试图返回一个 vector ,但只会得到更多的垃圾。

t.size();

现在您正在对实质上损坏的数据调用函数。

要解决此问题,请检查 x < keywords.size()vector::operator[] 中使用它之前-- 或者只使用 vector::at()确实进行边界检查。

关于c++ - std::vector.size() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5125511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com