小编Edo*_*doz的帖子

使用++运算符增加map <string,int>

我有一个地图来计算文件中单词的出现次数.我正在读文件中的文字,每次我读一个单词时我都想这样做:

map[word]++; //(where map is the name of my map, I'm not using map as a name of course)
Run Code Online (Sandbox Code Playgroud)

因此,如果我的地图已经将'word'作为一个键,它会增加它,否则它会创建新的键并递增它.

这就是我所关心的问题:如果我在一个新键上映射[word] ++(在第一个单词读取中是不可避免的),我的程序会崩溃,因为我的地图中的int是单元化的吗?如果是这样,告诉我的地图的最有效方法是什么:如果单词已经存在,那么在值上执行++,否则,创建值为1的新键?在这里使用带有'map.find'的if语句似乎不必要多余,您怎么看?

谢谢

c++ map operators

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

在成员函数末尾添加const是一种好习惯 - 在适当的地方?

在C++中,每次函数不修改对象时,在每次函数"符合"const的情况下,在成员函数定义的末尾添加const是一种很好的做法吗?我知道在这种情况下有必要:

class MyClass {

public:
int getData() const;
};

void function(const MyClass &m) { int a = m.getData(); dosomething... }
Run Code Online (Sandbox Code Playgroud)

但除此之外,以及const对实际功能的其他用途,确实在最后添加const实际上改变了代码的执行方式(更快/更慢),或者它只是编译器处理诸如一个案例的'标志'以上?换句话说,如果类中的功能不需要const(最后),添加它会有什么不同吗?

c++ const const-correctness

13
推荐指数
2
解决办法
6130
查看次数

使用迭代器,ifstream,ofstream意图完成它的方式

我有一个包含一堆单词的txt文件,每行一个.我需要读取这个文件,并把每个单词的列表,然后用户就可以修改此列表编辑完成后,程序会写一个新的文件修改的列表.

因为它是c ++的对象,我将有两个类,一个用于读/写文件,另一个用于编辑/混淆列表和用户.

考虑到这种方法,这是我在第一节课中的阅读功能:

bool FileMgr::readToList(list<string> &l)
{
if(!input.is_open())
    return false;

string line;
while(!input.eof())
{
    getline(input, line);
    l.push_back(line);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)

请记住:输入是在构造函数中打开的.问题:是否有一种不那么多余的方法可以从istream中获取该死的线并将其推回l?(中间没有'字符串').除了问题,这个功能似乎正常.

现在输出功能:

 bool FileMgr::writeFromList(list<string>::iterator begin, list<string>::iterator end)
{
    ofstream output;
    output.open("output.txt");
    while(begin != end)
    {
        output << *begin << "\n";
        begin++;
    }
    output.close();
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这是我主要的一部分:

    FileMgr file;
list<string> words;
file.readToList(words);
cout << words.front() << words.back();
list<string>::iterator begin = words.begin();
list<string>::iterator end = words.end();
file.writeFromList(begin, end);
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助,这两个功能现在都有效.现在关于样式,这是实现这两个功能的好方法吗?getline(输入,线)部分我真的不喜欢,任何人都有更好的主意?

c++ file-io iterator fstream coding-style

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