标签: stdvector

如何从std :: vector <std :: pair <UnicodeString,UnicodeString >>中删除重复项

如何从中删除重复值

std::vector <std::pair<UnicodeString, UnicodeString> > myVect;
Run Code Online (Sandbox Code Playgroud)

是否有任何内置函数或我需要为此编写自定义代码

c++ stl stdvector

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

c ++ std :: vector std :: sort无限循环

每当我试图对导致无限循环的对象矢量进行排序时,我就遇到了一个问题.我正在使用我传递给sort函数的自定义比较函数.

我能够通过在两个对象相等而不是true时返回false来解决问题但我并不完全理解解决方案.我认为这是因为我的比较功能违反了cplusplus.com上列出的规则:

比较函数对象,如果第一个参数位于其定义的特定严格弱顺序中的第二个参数之前,则返回两个与该范围中包含的相同类型的值,否则返回false.

任何人都可以提供更详细的解释吗?

c++ sorting stdvector

3
推荐指数
3
解决办法
1830
查看次数

有一个类的std :: vector作为属性同一个类是一个很好的设计选择吗?

我的问题陈述如下.存在"域"的概念,其由许多"子域"组成.现在,这些子域本身就是域.以下是我可以做的事情的基本方法.我可以使用auto_ptr或其他东西,但现在暂时离开.

class Domain
{
private:
    Domain* subdomains;
}
Run Code Online (Sandbox Code Playgroud)

但是,我能够编译并运行以下程序,我认为它做了同样的事情并给了我想要的东西.

#include <iostream>
#include <vector>
#include <string>

class Domain
{
private:
    std::string name_;
public:
    std::vector<Domain> subdomains;
    Domain(std::string name) : name_(name) {};
    std::string name() {return name_;}
    void addSubDomain(std::string subDomainName);
};

void Domain::addSubDomain(std::string subDomainName)
{
    subdomain.push_back(Domain(subDomainName));
}

int main()
{
    std::cout<<"Hello, World"<<std::endl;
    Domain domain("wow");
    domain.addSubDomain("wow-child");
    std::cout<<"Domain name is "<<domain.name()<<std::endl;
    std::cout<<"Subdomain name is "<<domain.subdomain[0].name()<<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我运行它的输出是

$./main 
Hello, World
Domain name is wow
Subdomain name is wow-child
Run Code Online (Sandbox Code Playgroud)

我的问题是,在实施以下内容时,我是否有任何陷阱?现在,我看不到任何东西.如果没有陷阱,那么这对我的问题来说是一个非常好的解决方案.

编辑

如果这不是一个解决方案,那么还有另一个我可以使用的解决方案,它不涉及原始指针的管理吗?

c++ nested-class stdvector

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

如何知道何时重新分配向量的内部数组?

我有一个std::vector包含很多元素.由于向量很大,我将指针存储到另一个向量中的某些特定元素,以便能够更快地访问它们.但是随着向量的增长,有时它的内部容器会被重新分配,导致我的所有指针都变得无效.

有没有办法知道这种情况何时发生?这样我就可以更新其他列表中的指针.

c++ std stdvector

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

在C++中漂亮地打印std :: vector

我怎么漂亮打印std::vector?例如,如果我构造一个std::vector<int>(6, 1),我可以运行它来获得像{1 1 1 1 1 1}C++ 一样的输出吗?它必须是通用的,因为大小和值可能会改变,因此std::vector<int>(4, 0)也是如此{0 0 0 0}.

c++ stdvector

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

正确的方法来设置std :: vector的大小

从我读到的,std::vector是与需要连续内存字节数组的c函数接口时使用的适当结构.但是我想知道如何在某些情况下确定阵列的大小

我写了一个小样本程序来说明我的意思.

int main(int argc, char *argv[])
{
    std::vector<unsigned char>v;
    unsigned char p[1024];

    sprintf((char*)&p[0], "%10d", 10);
    cout << "Size: " << v.size() << " Length: " << v.capacity() << endl;
    v.reserve(30);
    cout << "Size: " << v.size() << " Length: " << v.capacity() << endl;
    memcpy(&v[0], &p[0], 20);
    cout << "Size: " << v.size() << " Length: " << v.capacity() << endl;
    v.reserve(50);
    cout << "Size: " << v.size() << " Length: " << v.capacity() << endl;
    v.reserve(0); …
Run Code Online (Sandbox Code Playgroud)

c++ stl stdvector

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

将std :: sets合并到std :: vector中

考虑以下.

我有两个std::sets,并希望std::vector按排序顺序合并它们.

哪种方法最有效?

我做了类似的事情,但我认为必须有更好的方法.

std::set<int> S1;
std::set<int> S2;
// ....
// Initialization of sets
// ....

std::vector V;

std::set<int>::iterator iter;

for(iter = S1.begin(); iter!=S1.end(); ++iter)
{
    V.push_back(*iter);
}

for(iter = S2.begin(); iter!=S2.end(); ++iter)
{
    V.push_back(*iter);
}

std::sort(V.begin(), V.end());
Run Code Online (Sandbox Code Playgroud)

这是我的代码,有更有效的方法吗?提前致谢.

c++ sorting merge stdvector stdset

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

如何从std :: vector <>正确初始化向量

当我编译以下代码(使用-std = c ++ 11编译器标志)时,我得到(仅)错误消息:"'vec'不是类,命名空间或枚举".

#include <vector>
#include <iterator>

int main(){

std::vector<int> vec(10,1);
vec::iterator it;

return 0;
}
Run Code Online (Sandbox Code Playgroud)

因为我没有得到任何其他错误消息,对我来说这意味着一些名为'vec'的对象已被初始化,但不是作为向量,而是作为其他不是类的东西,因此范围运算符不能用过的.

据我所知,我使用了以下构造函数(http://en.cppreference.com/w/cpp/container/vector/vector):

vector(size_type count,
       const T& value,
       const Allocator& alloc = Allocator());
Run Code Online (Sandbox Code Playgroud)

如果它说这个构造函数"使用值值的元素的计数副本构造容器",那么我希望创建一个包含10个副本"1"的向量,但我必须误解一些东西,因此问题.

我的推理在哪里出错了,上面代码中的错误源自何处?

c++ vector stdvector

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

将const std :: vector <char>转换为unsigned char*?

为C库编写C++包装器.在库中有一个接受缓冲区的函数unsigned char *.自从使用C++以来,我将我的真实缓冲区存储在std::vector<char>我也添加的包装器类中const,因为所讨论的缓冲区是一个输入缓冲区而且它不会被修改.但是我的代码没有编译,演示:

#include <stdio.h>
#include <vector>

void x(unsigned char *s)
{
    printf("%s\n", s);
}

int main()
{
    const std::vector<char> s(10);

    x(reinterpret_cast<unsigned char *>(s.data())); // FAILS
}
Run Code Online (Sandbox Code Playgroud)

id有什么问题?如果我删除consts从const std::vector<char> s(10);它的工作原理,但我会喜欢你这样.

c++ const stdvector

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

尝试在同一个类中创建类的向量时出现错误

我正在尝试使用同一类的后代来创建类,以创建树,但是当我尝试访问vector的indeode时,它将永远无法工作。我尝试访问字符串时遇到异常:std :: length_error。

#include <iostream>
#include <vector>
#include <string>

using namespace std;

class A {
  public:
  string name;
  vector<A*> children;
};

int main()
{
    A cl;
    cl.name= "HI!";
    for(int i = 0; i < 10;i++) {
        A newCl;
        newCl.name= "World!";
        cl.children.push_back(&newCl);
    }

    for(int i = 0; i < 10;i++) {
        // error here:
        cout << cl.children[i]->name << endl;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有谁知道用C ++制作树的更简单方法,或者如何解决这个问题?

c++ stdvector visual-c++

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

标签 统计

c++ ×10

stdvector ×10

sorting ×2

stl ×2

const ×1

merge ×1

nested-class ×1

std ×1

stdset ×1

vector ×1

visual-c++ ×1