C++ - 在 FOR 循环中从向量获取大小

Posted

技术标签:

【中文标题】C++ - 在 FOR 循环中从向量获取大小【英文标题】:C++ - Gettings size from vector in FOR loop 【发布时间】:2013-01-20 23:58:28 【问题描述】:

我有一个要求用户输入的循环,并将其添加为向量,然后当他们键入“EXIT”时,它将停止并显示列表。我现在要做的是用size()确定元素的数量

这就是我所拥有的:

#include <iostream>
#include <string>
#include <unistd.h>
#include <iterator>
#include <vector>
using namespace std;

int main()

    write(1,"\E[H\E[2J",7);                                  
    vector<string> list;
    cout << "Enter UIDs: \n\n"; 
    for(string uid ; cin >> uid && uid != "EXIT"; list.push_back(uid))
        cout << " \n";
    copy(list.begin(), list.end(), ostream_iterator<string>(cout, "\n\n"));
    cout << "Vector size: " << uid.size() << endl;
    return 0;

尝试编译时出现错误:

g++ sof.cpp -o sof

sof.cpp:在函数“int main()”中: sof.cpp:16:32:错误:“uid”的名称查找已更改为 ISO“for”范围 sof.cpp:13:16:错误:不能在“uid”处使用过时的绑定,因为它有一个析构函数

【问题讨论】:

uid 在第 16 行不存在;它只在for 循环的范围内。 (提示:您的循环内容周围没有任何大括号)。 我已编辑以适当地格式化您的代码。这应该突出 @OliCharlesworth 提出的观点,即您缺少 for 循环主体的大括号。 @JonTaylor 不是真的,代码不需要大括号。错误是uid.size() 调用,应该是list.size() @OliCharlesworth 实际上,这里不需要大括号。 @juanchopanza 是的,我再次查看代码后意识到,但格式仍然有帮助。 【参考方案1】:

您查询的是uid.size() 而不是list.size()

【讨论】:

以上是关于C++ - 在 FOR 循环中从向量获取大小的主要内容,如果未能解决你的问题,请参考以下文章

根据向量大小在 for 循环内擦除 std::vector 的索引

如何获取 C++ 类成员向量的大小?

在opencv(C++)中从caffe读取多维数组

在基于范围的 for 循环中从 std::vector<Object> 获取指向 Object 的指针

C ++:终止遍历字符串向量的循环的最优雅方法?

C++中向量的大小