vector初始化不正确,不知此处应如何修改

kangxiao18 2013-01-08 04:47:20
#include <iostream>
#include <vector>

using namespace std;

int main(){
vector<int> text{1,2,3,4,5,6,7,8,9,10};

int sought;
cout << "What number are you seeking? " << endl;
cin >> sought;
auto beg = text.begin(), end = text.end();
auto mid = text.begin() + (end-beg)/2;
while (mid != end && *mid != sought)
{
if (sought < *mid){
end = mid;
}else{
beg = mid + 1;
}
mid = beg = (end - beg)/2;
}

return 0;
}
...全文
311 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kaile 2013-01-08
  • 打赏
  • 举报
回复
量不大就用数组中转下
Star-light 2013-01-08
  • 打赏
  • 举报
回复
c++11语法,vs2012不支持uniform initialization,2012之前的更不用说了。 vs2012安装了ctp更新了工具集就支持了。但是stl没升级所以还是不能用。。。。 3楼已经概括了现在常用的方法了
c__development 2013-01-08
  • 打赏
  • 举报
回复
引用 3 楼 kuanglong2016 的回复:
vector是没有类似数组的直接初始化方法的。常用的初始化方法有三种: 1. for循环 C/C++ code ? 123 for(int i = 1; i <= 10; ++i) text.push_back(i); 这种方法效率比较低,也不容易处理数据不连续的情况 2. 从数组中初始化 C/C++ code ? 12 ……
看帖长知识啊,boost库这种方法我就没用过,这个库可以加载看看了
SNAKE-SNAKE 2013-01-08
  • 打赏
  • 举报
回复
引用 3 楼 kuanglong2016 的回复:
vector是没有类似数组的直接初始化方法的。常用的初始化方法有三种: 1. for循环 C/C++ code?12for(int i = 1; i <= 10; ++i) text.push_back(i); 这种方法效率比较低,也不容易处理数据不连续的情况 2. 从数组中初始化 C/C++ code?12int arr[] = {1,2,3,4,5……
+1 用push一个一个的去加吧…… 或者你可以用一个数组去初始化vector容器。
mymtom 2013-01-08
  • 打赏
  • 举报
回复
vector<int> text{1,2,3,4,5,6,7,8,9,10}; 是没有问题的,只是需要支持C++11标准的编译器。
十毛 2013-01-08
  • 打赏
  • 举报
回复
vector是没有类似数组的直接初始化方法的。常用的初始化方法有三种: 1. for循环

for(int i = 1; i <= 10; ++i)
    text.push_back(i);
这种方法效率比较低,也不容易处理数据不连续的情况 2. 从数组中初始化
int arr[] = {1,2,3,4,5,6,7,8,9,10};
vector<int> text(arr, arr + sizeof(arr)/sizeof(int));
直观,而且可以通过直接修改数组来修改vector。效率也比较高,不过浪费一个临时变量空间 3. 使用boost库

#include <boost/assign.hpp>
int main(){
    using namespace boost::assign;
    vector<int> text;
    text += 1,2,3,4,5,6,7,8,9,10;
}
直观且方便修改,效率也高,也不用浪费临时变量空间。不过需要用到boost库
kangxiao18 2013-01-08
  • 打赏
  • 举报
回复

#include <iostream>
#include <vector>

using namespace std;

int main(){
vector<int> text{1,2,3,4,5,6,7,8,9,10};

int sought;
cout << "What number are you seeking? " << endl;
cin >> sought;
auto beg = text.begin(), end = text.end();
auto mid = text.begin() + (end-beg)/2;
while (mid != end && *mid != sought)
{
if (sought < *mid){
end = mid;
}else{
beg = mid + 1;
}
mid = beg = (end - beg)/2;
}

return 0;
}
kangxiao18 2013-01-08
  • 打赏
  • 举报
回复
错误信息 1>c:\users\kx\documents\visual studio 2012\projects\primer3-4\primer3-4\primer3-4.cpp(7): error C2601: “text”: 本地函数定义是非法的
kangxiao18 2013-01-08
  • 打赏
  • 举报
回复
多谢三楼解答。 我用的是vs2012,7楼的可能也对吧。

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧