为 std::vector 指定另一个名称/别名

问题描述 投票:0回答:2

我想给

std::vector
一个不同的名字,比如
MyVector
,所以我遵循了typedef

typedef std::vector<float> MyVector<float>;

然而,Visual Studio 抱怨

MyVector
“MyVector 不是模板”

如何分配另一个名称

std::vector

我的代码中可能有

MyVector
,本质上是
std::vector
,所以我只想将
std::vector
MyVector
相等,这样我就不必将所有
MyVector
更改为
std::vector

c++ vector typedef
2个回答
5
投票

你想要的是一个别名模板,像这样:

template <typename T>
using MyVector = std::vector<T>;

这将允许您像这样使用它:

MyVector<float> vec = stuff;

其中

vec
将是
std::vector<float>


0
投票
import cv2

click_count = 0
xy = []
def mouse_callback(event, x, y, flags, param):
    global click_count, xy
    if event == cv2.EVENT_LBUTTONDOWN:
        click_count += 1
        print("Point", click_count, ": (", x, y, ")")
        cv2.circle(img, (x, y), 3, (0, 0, 255), -1)
        xy.append([x,y])


def manual_select_pts(img, num_pts):
    # Create a window
    cv2.namedWindow("Image")

    # Set the mouse callback
    cv2.setMouseCallback("Image", mouse_callback)

    num_pts = 3
    # Display the image
    while click_count < num_pts:
        cv2.imshow("Image", img)
        key = cv2.waitKey(1) & 0xFF
        if key == ord('q'):
            break

    cv2.destroyAllWindows()

    return xy,

if __name__ == "__main__":
    # Load an image or create a blank one
    img = cv2.imread("bot.png")
    xy_pts = manual_select_pts(img, 3)

    print(xy_pts)
© www.soinside.com 2019 - 2024. All rights reserved.