小编use*_*802的帖子

为什么这段代码没有找到我集合中最长字符串的长度?

我在C++中遇到了一个非常奇怪的set迭代器问题.

set<string> dict;
dict.insert("hello");
dict.insert("my");

int maxLen = INT_MIN;

set<string>::iterator itr;
for (itr=dict.begin(); itr!=dict.end(); itr++) {
    int len = (*itr).length();
    if ( len > maxLen )
        maxLen = (*itr).length();
}
Run Code Online (Sandbox Code Playgroud)

这段代码帮助我将maxLen设置为5,这是单词集中最长单词的长度.

set<string> dict;
dict.insert("hello");
dict.insert("my");

int maxLen = INT_MIN;

set<string>::iterator itr;
for (itr=dict.begin(); itr!=dict.end(); itr++) {
    if ( (*itr).length() > maxLen )
        maxLen = (*itr).length();
}
Run Code Online (Sandbox Code Playgroud)

但是,这段代码无法给我正确的结果.运行代码后,maxLen仍然是INT_MIN的值.基本上没什么变化,除了我不再使用变量来保存(*itr).length()的值.

这对我来说很奇怪.我错过了什么吗?我只想澄清我对迭代器使用的怀疑.

非常感谢!

c++ iterator set

2
推荐指数
1
解决办法
273
查看次数

C++ Const_Cast是否会引发新变量?

#include <iostream>

using namespace std;

int main() {
        const int a = 2;
        const int *p = &a;
        int *p2 = const_cast<int*>(p);
        *p2=5;
        char *p3 = (char *)&a;
        cout << "p2 is" << *p2 << endl;
        cout << "p2 address " << p2 << endl;
        cout << "a is " << a << endl;
        cout << "a address " << &a << endl;

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

大家好!

根据输出,*p2和a具有不同的值,*p2是5,a是2.

但是,p2和&a是相同的.我糊涂了...

你能帮我理解一下这种情况吗?

非常感谢你!

c++ const-cast

1
推荐指数
1
解决办法
186
查看次数

标签 统计

c++ ×2

const-cast ×1

iterator ×1

set ×1