标签: stdvector

如何将vector <unsigned char>转换为int?

我已vector<unsigned char>提交二进制数据.我需要从矢量(2个字节)中取出2个项目并将其转换为整数.如何做到这一点不是用C风格?

c++ stl stdvector

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

将数组复制到向量中

我写了一个小程序:

void showrecord()
{
     char *a[]={ "O_BILLABLE_ACCOUNT","O_CUSTOMER_TYPE_INDICATOR",
                 "O_A_PARTY_MSISDN_ID","O_A_PARTY_EQUIPMENT_NUMBER",
                 "O_A_PARTY_IMSI","O_A_PARTY_LOCATION_INFO_CELL_ID",
                 ...  
               };

     vector<std::string> fields(a,a+75);

     cout<<"done!!!"<<endl;
}

int main()
{
     showrecord();
}
Run Code Online (Sandbox Code Playgroud)

我有一些字符串文字,我希望它们被复制到一个向量中.我没有找到任何其他简单的方法:(.或者如果有任何直接的方法来初始化矢量而不使用数组,那将非常有用.这是在我在unix上运行可执行文件后转储核心.它给了我一个警告,但是:

Warning 829: "test.cpp", line 12 
# Implicit conversion of string literal to 'char *' is deprecated.
D_TYPE","O_VARCHAR_5","O_VARCHAR_6","O_VARCHAR_7","O_VARCHAR_8","O_VARCHAR_9"};
Run Code Online (Sandbox Code Playgroud)

但是相同的代码在Windows上正常运行没有任何问题.我在HPUX上使用编译器aCC.

请帮忙! 下面的编辑是转储的堆栈跟踪.

(gdb) where
#0  0x6800ad94 in strlen+0xc () from /usr/lib/libc.2
#1  0xabc0 in std::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string<char,std::char_traits<char>,std::allocator<char>>+0x20 ()
#2  0xae9c in std<char const **,std::basic_string<char,std::char_traits<char>,std::allocator<char>> *,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>>::uninitialized_copy+0x60 ()
#3  0x9ccc in _C_init_aux__Q2_3std6vectorXTQ2_3std12basic_stringXTcTQ2_3std11char_traitsXTc_TQ2_3std9allocatorXTc__TQ2_3std9allocatorXTQ2_3std12basic_stringXTcTQ2_3std11char_traitsXTc_TQ2_3std9allocatorXTc____XTPPCc_FPPCcT118_RW_is_not_integer+0x2d8
    ()
#4  0x9624 in showrecord () at test.cpp:13
#5  0xdbd8 in …
Run Code Online (Sandbox Code Playgroud)

c++ vector stdvector

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

控制std :: vector重新分配

通过阅读std::vector我明白的参考

  1. insert当达到最大容量时调用将导致重新分配std::vector(导致迭代器失效),因为为其分配了更大容量的新内存.目标是保证连续数据的保证.

  2. 只要我坚持低于最大容量insert就不会导致(并且迭代器将完好无损).

我的问题如下:

当reserve自动调用时insert,有没有办法控制必须保留多少新内存?

假设我有一个初始容量为100的向量,当达到最大容量时,我想分配额外的20个字节.

有可能吗?

c++ stl insert stdvector

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

如何使用gdb"s"命令摆脱步入stl_vector.h?

学科.

编译:g ++ -g -Wall -o program program.cpp

正在运行:gdb -tui程序

谢谢,

哈维尔.

c++ gdb stdvector

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

使用push_back时std :: unique_ptr是否已移入std :: vector?

我有一个关于如何std::unique_ptr插入a的问题std::vector.想象一下,我有一个生成对象的函数,如下所示:

std::unique_ptr<CObject> createObjects()
{
    return std::unique_ptr<CObject> (new CObject());
}
Run Code Online (Sandbox Code Playgroud)

现在在我的代码中,我有一个std::vector<std::unique_ptr<CObjects>> vec和我插入的元素如下:

vec.push_back(createObjects());
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:unique_ptr移动到矢量中还是复制了?

c++ vector stdvector unique-ptr c++11

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

从向量 c++ 中获取匹配项的索引

我正在遍历地图,该地图值类型是向量。我在地图中一一获取向量并使用 std::find() 方法搜索项目。

for(BoundWaysMap::const_iterator iterator  = boundWays.begin(); iterator != boundWays.end(); iterator++) 
{
    string wayId = iterator->first;
    std::vector<string> nodesRefCollection = iterator->second;

    if(std::find(nodesRefCollection.begin(), nodesRefCollection.end(), id)!=nodesRefCollection.end())
    {
        std::string cont = "|" + wayId;
        legsFrame.append(cont);
        legsCount ++;
        isFound = true;
    }    
}
Run Code Online (Sandbox Code Playgroud)

我想从 find 方法中获取找到的项目的索引。

c++ stdvector

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

用等距值填充 std::vector&lt;double&gt; 的最简单方法

假设我有价值观double start,double end和步长double step。

填充std::vector<double>从 at 开始start并stepsize随着当前值小于递增的值的最简单方法是end什么?

我在问自己,是否有一个 stl 函数使这个任务成为单线任务。

std::vector<double> fill(double start, double end, double step) {
  // Code
}

main() {
  auto ret=fill(0.2, 2.3, 0.2);
  // ret = {0.2, 0.4, 0.6, ... , 2.2}
}
Run Code Online (Sandbox Code Playgroud)

c++ stl stdvector

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

将矢量分配给单个元素

考虑std::vector<T>某种类型T.我收到一个指向这种类型的指针到函数中,也是一个实例T; t说.

我的功能看起来像这样:

void bar(std::vector<T>* foo, const T& t)
{
    foo->clear();
    foo->push_back(t);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在一个语句中编写函数体?*foo = t;由于不存在适当的赋值运算符而无法工作.我也在考虑使用

foo->assign(&t, &t + 1);
Run Code Online (Sandbox Code Playgroud)

但那似乎很顽皮.

我正在使用C++ 11.

c++ stdvector c++11

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

c ++ float*array作为对std :: vector <float>的引用

我想创建一个std::vector<float> vpd将引用的float*.

float * old = new float[6];
for (int i = 0; i < 6; i++)
{
    old[i] = i;
}
vector<float> vpd(6);
auto refasd = &*vpd.begin();
*refasd = *old;
vpd[0] = 23;
cout << old[0] << endl;
Run Code Online (Sandbox Code Playgroud)

我应该如何修改代码,如果我想要得到23的cout?

c++ arrays reference stdvector

4
推荐指数
2
解决办法
570
查看次数

如何在没有循环的C ++中总结vector int的向量

我尝试以vector<vector<int>>非循环的方式实现对a的所有元素的总结。
之前,我已经检查了一些相关的问题,如何总结C ++向量的元素?。
因此,我尝试使用std::accumulate它来实现它,但是我发现很难重载Binary Operatorin std::accumulate并实现它。
因此,我对如何实现它感到困惑,std::accumulate还是有更好的方法?
如果不介意有人可以帮助我吗?
提前致谢。

c++ stdvector

4
推荐指数
2
解决办法
171
查看次数

标签 统计

c++ ×10

stdvector ×10

stl ×3

c++11 ×2

vector ×2

arrays ×1

gdb ×1

insert ×1

reference ×1

unique-ptr ×1