首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
迭代std :: vector:unsigned与有符号的索引变量?
社区首页 >问答首页 >迭代std :: vector:unsigned与有符号的索引变量?

迭代std :: vector:unsigned与有符号的索引变量?

提问于 2017-12-25 08:35:12
回答 2关注 0查看 405

在C ++中迭代一个向量的正确方法是什么?

考虑这两个代码片段,这个工作正常:

代码语言:txt
AI代码解释
复制
for (unsigned i=0; i < polygon.size(); i++) {
代码语言:txt
AI代码解释
复制
    sum += polygon[i];
代码语言:txt
AI代码解释
复制
}

和这个:

代码语言:txt
AI代码解释
复制
for (int i=0; i < polygon.size(); i++) {
代码语言:txt
AI代码解释
复制
    sum += polygon[i];
代码语言:txt
AI代码解释
复制
}

生成warning: comparison between signed and unsigned integer expressions。

我是C ++世界的新手,所以unsigned变量对我来说看起来有些可怕,而且我知道unsigned如果使用不正确,变量可能是危险的,所以 - 这是正确的吗?

最爱开车啦

发布于 2017-12-25 09:08:58

在你的例子中的具体情况,我会使用STL算法来完成这个。

代码语言:txt
AI代码解释
复制
#include <numeric> 
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
sum = std::accumulate( polygon.begin(), polygon.end(), 0 );

对于一个更一般的,但仍然相当简单的情况下,我会去:

代码语言:txt
AI代码解释
复制
#include <boost/lambda/lambda.hpp>
代码语言:txt
AI代码解释
复制
#include <boost/lambda/bind.hpp>

代码语言:txt
AI代码解释
复制
using namespace boost::lambda;
代码语言:txt
AI代码解释
复制
std::for_each( polygon.begin(), polygon.end(), sum += _1 );
查看全部 2 条回答
为您推荐最爱开车啦回答过的其他问题

硬盘可以升级吗?

提问于 2019-07-17672
最爱开车啦
可以升级,小微活动中没有云硬盘的的,后续可以用同帐号在官网购买和服务器同地域同地区的云硬盘挂载到服务器上使用。 云硬盘挂载初始化方法 可参考 https://cloud.tencent.com/document/product/362/6735
4人回答了此问题
相关文章
std::vector初始化[通俗易懂]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/29
1.4K0
3,变量与标点符号
与C等许多编程语言相比,作为动态语言的Python,其变量是一个标签,而不是一个容器。
lyhue1991
2020/07/20
9240
3,变量与标点符号
std::vector find_vectornator工具使用
vector本身是没有find这一方法,其find是依靠algorithm来实现的。
全栈程序员站长
2022/09/27
3310
从 C++ STD::VECTOR的RESIZE和RESERVE看VECTOR的源码实现
https://www.cnblogs.com/yocichen/p/10574819.html https://www.kancloud.cn/digest/stl-sources/177267
早起的鸟儿有虫吃
2022/01/20
1.7K0
从 C++ STD::VECTOR的RESIZE和RESERVE看VECTOR的源码实现
C++ std::vector元素的内存分配问题
来看一个问题: 在使用C++ STL的vector时,下面三种写法有什么不同呢?其内存分配是怎么样的呢?
卡尔曼和玻尔兹曼谁曼
2019/01/22
3.5K0
C++ std::vector元素的内存分配问题
动态数组和C++ std::vector详解
std::vector是C++的默认动态数组,其与array最大的区别在于vector的数组是动态的,即其大小可以在运行时更改。std::vector是封装动态数组的顺序容器,且该容器中元素的存取是连续的。
艰默
2023/09/05
6510
动态数组和C++ std::vector详解
std::function与std::bind
一、背景介绍: 函数指针始终不太灵活,它只能指向全局或静态函数,对于类成员函数、lambda表达式或其他可调用对象就无能为力了,因此,C++11推出了std::function与std::bind这两件大杀器,他们配合起来能够很好的替代函数指针。
灰子学技术
2022/01/18
9460
C++ std::vector元素的内存分配问题(补充)
在上篇博文C++ std::vector元素的内存分配问题中我们已经明确了使用std::vector容器时元素在内存中的创建情况。 所以,我个人觉得使用std::vector<T> vec;这种类型的最省时省力。 我们还是看原来的例子:
卡尔曼和玻尔兹曼谁曼
2019/01/22
1.8K0
size_type、size_t、differentce_type以及ptrdiff_t
目录(?)[-] size_type size_t different_type ptrdiff_t size_t是unsigned类型,用于指明数组长度或下标,它必须是一个正数,std::size_
猿人谷
2018/01/17
9840
stl中的size_type,difference_type和value_type,reference
c++11新特性标准中,编译器可以通过auto或者decltype来推断变量的类型
大忽悠爱学习
2021/11/15
9540
std::jthread与std::thread区别
​std::jthread是C++20新引入的线程类,与 std::thread 类似,或者说,jthread是对thread进一步的封装,功能更强大​。
音视频牛哥
2022/04/03
1.3K0
<c++ 常用代码块> | std::string 与 std::wstring转化
#include <string>#include <locale>#include <codecvt>// convert string to wstringinline std::wstring to_wide_string(const std::string& input){std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;return converter.from_bytes(input);}// convert wstring t
IsEva
2022/12/05
1K0
模拟实现vector/迭代器失效问题
对于STL,我们不仅学会使用STL,还要了解其底层原理,这样一来,我们就能知道什么时候用string好,什么时候用vector,什么时候用list,哪种方法效率高等等。其次了解了STL的底层原理,也助于我们的C++功力大增!
二肥是只大懒蓝猫
2023/03/30
3840
模拟实现vector/迭代器失效问题
如何优雅的使用 std::variant 与 std::optional
std::variant与std::optional是c++17加入的新容器,variant主要是为了提供更安全的union, 而optional除了存取T类型本身外, 还提供了一个额外的表达optional是否被设置值的状态.
fangfang
2021/10/29
3.8K0
Python3下的【并行迭代】与【按索引
在使用python3时,有【并行迭代】与【按索引迭代】,并行迭代相对来说好理解,现在介绍下【按索引迭代】。
py3study
2020/01/03
7110
C++教程(最全)「建议收藏」
七种基本的C++数据类型:bool、char、int、float、double、void、wchar_t 类型修饰符:signed、unsigned、short、long 注:一些基本类型可以使用一个或多个类型修饰符进行修饰,比如:signed short int简写为short、signed long int 简写为long。
全栈程序员站长
2022/08/10
2.5K0
C++教程(最全)「建议收藏」
C++教程(凯格尔训练法教程)
七种基本的C++数据类型:bool、char、int、float、double、void、wchar_t 类型修饰符:signed、unsigned、short、long 注:一些基本类型可以使用一个或多个类型修饰符进行修饰,比如:signed short int简写为short、signed long int 简写为long。
全栈程序员站长
2022/08/01
3K0
C++教程(凯格尔训练法教程)
无符号数和有符号数
人有十个手指头,习惯了逢十进一,于是十进制成了生活中的标准。程序的世界只有高低电平两种状态,更适合用二进制来表示,于是二进制成了程序世界的标准。 对与无符号数来说,我们更喜欢谈他们之间的转化,十进制是我们最习惯的进制,于是十进制转为R进制,R进制转为十进制变尤为重要。
naget
2019/07/03
3.1K0
无符号数和有符号数
std::function与std::bind使用总结
C++中函数指针的用途非常广泛,例如回调函数,接口类的设计等,但函数指针始终不太灵活,它只能指向全局或静态函数,对于类成员函数、lambda表达式或其他可调用对象就无能为力了,因此,C++11推出了std::function与std::bind这两件大杀器。
forrestlin
2019/07/29
11.4K0
C++ vector用法详解
  vector的元素在内存中连续排列,这一点跟数组一样。这意味着我们元素的索引将非常快,而且也可以通过指针的偏移来获取vector中的元素。
猫叔Rex
2020/06/30
9.4K0

相似问题

unsigned int与size_t?

2679

如何找出一个项目是否存在于std :: vector中?

2372

我怎样才能知道std :: vector的大小/长度(以字节为单位)?

12.3K

多索引与多列索引?

2384

你如何获得foreach循环的当前迭代的索引?

2271
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
到家集团 | 技术VP擅长5个领域
腾讯云TDP | KOL擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文