c++ - 在 C++11 中是否有更优雅的方法来执行以下操作?

标签 c++ c++11

我想避免有关 unsigned int 和 signed int 之间比较的警告。

我使用循环,例如:

for (int i =0 ; i < vec.size(); i++) {
 // do something
}

它给出了这些警告(这本身很好,我想要高级警告)。

我想到了将其更改为以下内容:

for (auto i = vec.size()*0; i < vec.size(); i++) {
 // do something
}

在这种情况下我不会收到警告。但我想知道是否有比这更优雅的东西,它会自动推断出迭代器所需的类型。

最佳答案

使用基于范围的for循环

for (auto& i : vec)
{
    cout << *i;
}

使用迭代器。

for (auto it = vec.begin(), end_it = vec.end(); it != end_it; ++it)
{
    cout << *it;
}

如果你想要一个计数器,使用std::vector<T>::size_type或者只是 size_t如果你懒惰。

关于c++ - 在 C++11 中是否有更优雅的方法来执行以下操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28282959/

相关文章:

c++ - 该片段在 Coliru 中编译时带有警告,但在 Ideone 中编译正常。哪一个是正确的?

c++ - 如何使 Python 运行时安全?

c++ - VSCode IntelliSense无法识别SDL框架的SDL_image扩展库

c++ - 为什么我不能在此链接列表中打印第一个元素?

C++ std::atomic - 不可能基于共享原子变量同步 2 个线程

c++ - 如何在 cpp 中导入/包含字符串

c++ - 在 Linux 终端上使用 C++ 编译示例 opengl 应用程序

c++ vector/类/结构到简短的冗长代码

c++ - std::chrono::steady_clock::now 应该是 noexcept 吗?

c++ - 抽象类可以在 C++11 中有构造函数和私有(private)成员吗